运算符
-
算术运算符:+,-,*,/,%,++,--
-
赋值运算符:=
-
关系运算符:>,<,>=,<=,!=,instanceof
-
逻辑运算符:&&,||,!
-
位运算符:&,|,^,~,>>,<<,>>>
-
条件运算符:?:
-
扩展赋值运算符:+=,-=,*=,/=
注意
进行基本运算时的返回类型
-
涉及变量类型为byte或short时,返回类型为int
-
涉及变量类型只含int和byte或short时,返回类型为int
-
涉及变量类型只含long和int、byte或short时,返回类型为long
-
涉及变量类型只含float和long、int、short或byte时,返回类型为float
-
涉及变量类型只含double和float、long、int、short或byte时,返回类型为double
-
即返回优先级:double > float > long > int
a++与++a的区别
-
b = a++ 等价于 b = a; a = a+1
-
b = ++a 等价于 a = a+1; b = a
int a = 3;
int b = a++;
system.out.println(a);//4
system.out.println(b);//3int c = 3;
int d = ++c;
system.out.printl(c);//4
system.out.printl(d);//4
逻辑运算
&&: 同真为真 (运算逻辑为是否有假,一旦有假则返回 false)
||: 有真为真 (运算逻辑为是否有真,一旦有真则返回 true)
!:取反
int c = 1;
int b = 1;
system.out.println((c == 2)&&(++c == 2));//false
system.out.println((b == 1)||(++b == 1));//true
system.out.println(c);//输出1,说明++c == 2未执行
system.out.println(b);//输出1,说明++b == 1未执行
位运算
二进制运算
A 0000 1011
B 1011 0110
符号 | 运算 | 格式 | 结果 |
---|---|---|---|
| | 按位或 | A | B | 1011 1111 |
^ | 按位异或 | A ^ B | 1011 1101 |
~ | 按位取反 | ~B | 0100 1001 |
& | 按位与 | A & B | 1011 1111 |
<< | 按位左移 | A << 1 | 0001 0110 |
>> | 按位右移 | B >> 3 | 0001 0110 |
-
位运算是一种极高效的底层运算
如计算 2 * 8 = ?的问题,用位运算是效率最高的方法
system.out.println(2<<3)
//0000 0010左移三位得0001 0000,即16
//左移n位,即*(2^n);右移n位,即/(2^n)
字符串连接符: +
-
当'+'左右涉及的操作数含String类型,则会自动把另一操作数也转化为String类型并进行连接
int a = 10;
int b = 20;
String c = "20";
system.out.println(""+a+b);//""为空字符串
//输出1020
//""+a 转化为String类型10
//String类型10+b,继续将b转化为String20,连接得1020
system.out.println(a+b+"");
//输出30
//从左往右,a+b未涉及String,基本运算得30,再进行后续连接
system.out.println(a+(b+""));
//输出1020
system.out.println(a+c);
//输出1020
三元操作符 ?:
A ? B : C
(如果 A == true ,则 B,否则 C)
int score = 42;
String print = score >= 45? "及格":"不及格";
system.out.println(print);
//输出不及格