运算符 | 运算 |
---|---|
+ | 正号 |
- | 负号 |
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 取模(取余) |
++ | 自增 |
– | 自减 |
+ | 字符串拼接 |
除法(/):Java中,整型数据除法运算结果的舍入规则与C语言中相同,都是向0舍入。
int a = 3/2; //float除法应该为 1.5
int b = 5/3; //float除法应该为 1.666
int c = 5 /4; //~~~~~~~~~~~~ 1.25
int d = -3/2; //~~~~~~~~~~~~ -1.5
int e = -5/3; //~~~~~~~~~~~~~~ -1.66
int f = -5/4; //~~~~~~~~~~~~~~ -1.25
System.out.printf("a is %d\nb is %d\nc is %d\n" +
"d is %d\ne is %d\nf is %d\n",
a, b,c,d,e,f);
输出结果:
a is 1
b is 1
c is 1
d is -1
e is -1
f is -1
浮点型数据除法运算结果小数部分的位数:若能整除,显示整数+“.0”(如2.0);若能除尽且有小数,显示有效的位数,小数末尾的0不显示;若不能除尽,显示该数据类型能保留的位数。
float a = 10F;
System.out.println(a / 2);//5.0
System.out.println(a / 4);//2.5
System.out.println(a / 8);//1.25
System.out.println(a / 16);//0.625
System.out.println(a / 3);//3.3333333
System.out.println(a / 7);//1.4285715
double b = 10;
System.out.println(b / 2);//5.0
System.out.println(b / 4);//2.5
System.out.println(b / 8);//1.25
System.out.println(b / 16);//0.625
System.out.println(b / 3);//3.3333333333333335
System.out.println(b / 7);//1.4285714285714286
取模(%):a % b 的本质是 a - a / b * b
System.out.println(10 % 3); //1
System.out.println(-10 % 3); // -10 - (-10) / 3 * 3 = -1
System.out.println(10 % -3); // 10 - 10 / (-3) * (-3) = 1
System.out.println(-10%-3); // -10 - (-10) / (-3) * (-3) = -1
自增(++)/ 自减(- -):
作为独立语句使用时:i++ 和 ++i 都完全等价于 i = i + 1;
作为表达式使用时:++i 先自增后赋值;i++ 先赋值后自增。
int i = 10;
i++;
++i;
System.out.println("i=" + i); //12
int j = 8;
int k = ++j; //等价于j=j+1; k=j
System.out.println("k = "+ k + " j=" + j);//9 9
k = j++; //等价于k =j; j=j+1;
System.out.println("k = "+ k + " j=" + j);//9 10
练习题:
int i = 1;
i = i++;
System.out.println(i); // 输出1
上面的代码做了这样的工作:temp = i; i = i + 1; i = temp;
int i = 1;
i = ++i;
System.out.println(i); // 输出2
上面的代码做了这样的工作:i = i + 1; temp = i; i = temp;
关系运算的结果都是boolean型,或者为true,或者为false。
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
== | 等于 | 8 == 7 | false |
!= | 不等于 | 8 != 7 | true |
< | 小于 | 8 < 7 | false |
> | 大于 | 8 > 7 | true |
<= | 小于等于 | 8 <= 7 | false |
>= | 大于等于 | 8 >= 7 | true |
instanceof | 检查是否是类的对象 | “hsp” instanceof String | true |
int a = 9;
int b = 8;
System.out.println(a > b); //T
System.out.println(a >= b); //T
System.out.println(a <= b); //F
System.out.println(a < b);//F
System.out.println(a == b); //F
System.out.println(a != b); //T
boolean flag = a > b; //T
System.out.println("flag=" + flag) ;
a | b | a & b | a && b | a | b | a || b | !a | a ^ b |
---|---|---|---|---|---|---|---|
true | true | true | true | true | true | false | false |
true | false | false | false | true | true | false | true |
false | true | false | false | true | true | true | true |
false | false | false | false | false | false | true | false |
异或(^): 相同为false,不同为true(求异)。