第二章 基本符号

引例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.Scanner;
public class ComputeLoan {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入年利率(注:输入%前面的数字如5.4):");
double yearlyRate =sc.nextDouble();//从输入浮点数
double monthlyRate=yearlyRate/100/12;//由年利率计算月利率
System.out.println("请输入贷款年限:");
int year =sc.nextInt();//键盘输入整数
System.out.println("请输入贷款金额");
double amount =sc.nextDouble();
//实现房贷公式
double monthlyPay=amount*monthlyRate/1-1/Math.pow(1+monthlyRate,year*12); double totalPay=monthlyPay*year*12;//计算还款总额
System.out.println("每月支付额为:" + monthlyPay) ;
System.out.println("总还款额为:" + totalPay) ;
}
}

变量

变量作用:

 用于存储数据——输入、输出和中间数据。

声明变量:

数据类型     变量名;
注意:变量在使用前必须声明

例如:

1
2
3
int x;         
double radius;
char a;

变量声明

变量通常有初值,可以在一步中说明变量并对其初始化,例如:

1
2
int x = 1;
double d = 1.4;

标识符

  • 是用户定义的用于表示变量名、类名、接口名、方法名、方法的参数名等符号。

    命名规则

  • 由字母、数字、下划线_、美元符号$组成
  • 首字母不能是数字
  • 不能是保留字(50个)
  • 区分大小写
  • 标识符名称最好有意义

    Java的基本符号

    数字常量

  • 整数:100,31,-100(以0开头表示8进制,以0x开头表示16进制)
  • 小数:0.5

字符编码

  • 使用16位的Unicode编码,能表示所有自然语言字符

    字符常量

  • 用单引号括起来的单个字符,比如:‘A’,‘2’,也可以是‘中’等非英文字符

字符串常量

  • 用双引号括起来的字符序列,比如:“欢迎”

布尔常量:

  • 只有两个值:true和false

数据类型

Java中共三种基本数据类型:

  • 数值型

  • 字符型

  • 布尔型
    常见数据类型见下表:
    Java常见数据类型表

    字符数据类型

  • 字符数据类型char用于表示单个字符。如:

    1
    2
    3
    4
    char c = 'A'; 
    char c = '4';
    char c = 98;
    char c = ‘\\'

    布尔数据类型

  • 布尔数据类型来自布尔代数,它的值域包括两个值:真(true)和假(false)。例如:

    1
    2
    boolean lightsOn = true;
    boolean lightsOn = false;

    类型转换

    精度由高到底排序:

    double > float > long > int > short > byte

    可以将低精度的值赋给高精度类型的变量

    比如:

    1
    double i=10;

    但是,如果不进行强制类型转换,就不能将高精度类型的值赋给低精度类型的变量。

    如:

    1
    float f = 10.1;(错)

    类型转换是一种操作,它把一种数据类型的值转换成另一种数据类型。

    用于由高精度向低精度转换时;

    例如:

    1
    2
    float f = (float)10.1;
    int i = (int)f;

    Java中当两个类型不同的运算对象进行二元运算时,Java 自动 把精度较低的类型转换成另一个精度较高的类型。

    数值运算时,表达式提升规律如下:

  • 操作数中如果有double类型,则都会转换成double类型;

  • 如果有float类型,则都会转换成float类型;

  • 如果有long类型,则都会转换成long类型;

  • 其他的byte, short, char, int 自动提升为int
    例:

    1
    2
    3
    4
    5
    6
    7
    public class TypeConvert {
    public static void main(String[] args) {
    byte b1 = 3;
    byte b2 = 4;
    byte b3=b1+b2;//此处有语法错误 byte类型过小 数据类型长度溢出
    }
    }

    运算符

  • 算术运算符包括:+, -, *, / 和 %。

  • 整数除法的结果是整数,如5/2= 2而不是2.5。考虑1/2=?

  • 运算符%得出除法的余数,如5%2=1 。

  • 示例代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    // MathmeticsOperationTest.java
    public class MathematicsOperatorTest {
    public static void main(String[] args) {
    // 定义整形变量a,b,分别赋值20和7
    int a=20;
    int b=7;
    // 进行加、减、乘、除和求余运算
    int sum = a+b;
    int sub = a-b;
    int mul = a*b;
    int div = a/b;
    int res = a%b;
    // 输出运算的结果
    System.out.println("a="+a+" b="+b);
    System.out.println("a+b="+sum);
    System.out.println("a-b="+sub);
    System.out.println("a*b="+mul);
    System.out.println("a/b="+div);
    System.out.println("a%b="+res);
    }
    }

    赋值运算符

  • 进行变量说明后,可以用赋值语句给它赋一个值,赋值语句语法如下:

      variable = value;  
      variable = expression;  
  • 注意:在赋值语句中,左边变量的数据类型必须与右边值的数据类型相容。
    例:

    1
    2
    3
    4
    int x = 1;          
    double radius = 1.0;
    char a = 'A';
    x = x + 5*(3/2);

    复合赋值运算符

    符合运算符举例
    示例代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    // CompareOperator.java
    public class CompareOperator {
    public static void main(String[] args) {
    int a = 3;
    int b = 4;
    boolean bigger = a>b;
    boolean less = a<b;
    boolean biggerEqual = a>=b;
    boolean lessEqual = a<=b;
    boolean equal = a==b;
    boolean notEqual = a!=b;
    System.out.println("a="+a+" b="+b);
    System.out.println("a>b:"+bigger);
    System.out.println("a<b:"+less);
    System.out.println("a>=b:"+biggerEqual);
    System.out.println("a<=b:"+lessEqual);
    System.out.println("a==b:"+equal);
    System.out.println("a!=b:"+notEqual);
    }
    }

    增量运算符和减量运算符

  • 前置增量/减量运算符:变量先加1或减1,再参与表达式中的运算。
    ++x 或者 --x

  • 后置增量/减量运算符:变量先参与表达式的运算,再加1或减1。

    x++ 或者 x--

    自增、自减运算符

    x = 1;
    y = x++;
    y = ++x;

  • 上述语句运行后x和y的值分别是多少? x=3 y=3
    示例代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // AddOne.java
    public class AddOne {
    public static void main(String[] args) {
    int x1=3;
    int x2=3;
    // ++在后面
    int y1 = x1++;
    // ++在前面
    int y2 = ++x2;
    System.out.println("y1="+y1+" y2="+y2);
    }
    }

    比较运算符

    运算符 名称 结果
    < 小于 1<2 true
    <= 小于等于 1<=2 true
    > 大于 1>2 false
    >= 大于等于 1>=2 false
    == 等于 1==2 false
    != 不等于 1!=2 true

示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// CompareOperator.java
public class CompareOperator {
public static void main(String[] args) {
int a = 3;
int b = 4;
boolean bigger = a>b;
boolean less = a<b;
boolean biggerEqual = a>=b;
boolean lessEqual = a<=b;
boolean equal = a==b;
boolean notEqual = a!=b;
System.out.println("a="+a+" b="+b);
System.out.println("a>b:"+bigger);
System.out.println("a<b:"+less);
System.out.println("a>=b:"+biggerEqual);
System.out.println("a<=b:"+lessEqual);
System.out.println("a==b:"+equal);
System.out.println("a!=b:"+notEqual);
}
}

逻辑运算符

运算符 名称 描述
&, && 逻辑与,并且
, 逻辑或,或者
^ 异或 逻辑异或,排同
逻辑否定,取反
示例代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// LogicOperator.java
public class LogicOperator {
public static void main(String[] args) {
// 定义布尔类型的变量b1和b2,并分别赋值
boolean b1 = true;
boolean b2 = false;
// 进行各种布尔运行,并输出结果
System.out.println("b1="+b1+" b2="+b2);
System.out.println("b1&&b2="+(b1&&b2));
System.out.println("b1&b2="+(b1&b2));
System.out.println("b1||b2="+(b1||b2));
System.out.println("b1|b2="+(b1|b2));
System.out.println("!b1="+(!b1));
System.out.println("b1^b2="+(b1^b2));
}
}

运算符 & 和 |

  • 运算符 & 和 | 的两个运算对象都要计算。&又称为无条件与运算符,| 称为无条件或运算符。

  • 使用&和 | 运算符可以保证不管左边的操作数是true还是false,总要计算右边操作数。

    运算符 && 和 ||

  • 使用运算符&& 和 ||时,如果左边的表达式能将结果确定,无需再进行右边的表达式计算。

    条件运算符

    Op1 ? Op2 : Op3

    Op1为布尔型 ,当Op1为true,表达式结果为Op2的值,否则为Op3的值
    例如:
    2 > 1 ? 3 : 4 的值是 3
    1 > 2 ? 3 : 4 的值是 4

字符串连接运算符

可以实现字符串的连接
基本格式: op1 + op 2
要求op1和op2至少要有一个是字符串,另一个可以是各种类型
示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// StringJoin.java
public class StringJoin {
public static void main(String[] args) {
byte b = 3;
short s = 4;
int i=10;
long l = 11;
float f = 3f;
double d2 = 23.5;
char c = 's';
boolean bool = false;
java.util.Date d = new java.util.Date();

// 使用字符串与各种类型的数据进行连接
System.out.println("byte类型:"+b);
System.out.println("short类型:"+s);
System.out.println("int类型:"+i);
System.out.println("long类型:"+l);
System.out.println("float类型:"+f);
System.out.println("double类型:"+d2);
System.out.println("char类型:"+c);
System.out.println("boolean类型:"+bool);
System.out.println("其他类的对象:"+d);
}
}

转义字符

换行符 \n \u000a
回车键 \r \u000d
退格键 \b \u0008
Tab键 \t \u0009
斜杠 \ \u005c
单引号 \’ \u0027
双引号 \” \u0022

注释

  • 单行注释: //注释内容
  • 多行注释:
    /*注释内容 注释内容*/
  • 文档注释:
    /** … */

    Math类

    见书p28 2.5.6

    Scanner类

    见书p29 2.5.7