基本运算符
运算符的种类
种类 | 包含 | 注释 |
---|---|---|
算数运算符 | +,-,*,/,%,++,-- | 自加,自减 |
赋值运算符 | = | 用来赋值 |
关系运算符 | >,<,>=,<=,==,!= ,instanceof | 最后一个词,是二元操作符(运算符) |
逻辑运算符 | &&,||,! | 与,或,非 |
位运算符 | &,|,^,~,>>,<<,>>> | 跟进制有关 |
条件运算符 | ?,: | |
拓展赋值运算符 | +=,-=,*=,/= |
运算符的特点
二元运算符
-
在多个不同数据类型的加减乘除中,如果包含long,则最后输出的数据类型为long。
如果不包含long,结果必定会为int,无论里面有没有。
public class Demo07 { public static void main(String[] args) { long a = 123123123123123L; int b = 12313; short c = 10; byte d = 2; System.out.println(a+b+c+d);//会输出一个long类型的数 System.out.println(b+c+d);//会输出一个int类型的数 System.out.println(c+d);//会输出一个int类型的数 } }
-
更多运算(幂运算等)会使用Math工具类
//随时随地调用math方法:输入Math.pow(),然后alt+回车。 double pow = Math.pow(2, 3); System.out.println(pow);
加号的其他用途
-
字符串连接符:
-
在输出过程中,如果想要在同一个sout语句中输出多个内容,需要用到加号+
-
在字符串处理中,若加号+ 前面或后面出现了字符串,那么会把整个连加运算当成多个字符串,然后进行连续输出。
举个例子:
-
public class Demo09 {
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println(a+b);//输出:30。简单的加法运算
System.out.println(""+a+b);//输出:1020,即依次输出a与b。
System.out.println(a+b+"");//输出:30。即便已经出现了“”,但是a+b发生在最前,所以相当于把“30”这个字符串输出了。
System.out.println(a+b+""+b);//输处:3020。这是对上一条语句的验证。
}
}
自增自减
-
b = a++:先执行这一行语句(赋值,把a此时的值赋给b),再自增
-
b = ++a:先自增,再执行这一行语句。
关系运算符
- 结果一定是布尔值,只有true与false
逻辑运算符
-
短路运算
在&&中存在特性:若&&前已经为假,则后面的东西不会被执行
int c = 5; boolean flag = (c<4)&&(c++<4); System.out.println(flag); System.out.println(c);
输出结果:false,5。 也就是说(c++<4)这一块没有被执行。
位运算
- &,|,^,~:两个二进制,逐位比较!!
A = 0011 1100
B = 0000 1101
那么A&B 逐位进行“与”的比较,会生成0000 1100
A|B 逐位进行“或”的比较,会生成0011 1101
A^B 逐位进行“异或”的比较,相同则0,不同则1: 0011 0001
为取反,如B = 1111 0010
-
<< 与 >>:效率极高的方法
2<<3 = 16,为什么呢?
二进制与十进制对照:
二进制 十进制 0000 0000 0 0000 0001 1 0000 0010 2 0000 0011 3 0000 0100 4 0000 1000 8 0000 1100 12 0001 0000 16 可以发现,2与16所对应的二进制数实际上就是把那个1左移3次
原来,<<指的是“左移”,也可以解释为添0:
可以看到,“3”是11,左移两次后变成1100,其实就是在后面加两个0。
上述运算可以记为:3<<2。
总结了一个规律: 2<<3 即为 2 ×2×2×2,乘了三个2
3<<2 即为 3 ×2×2 ,乘了两个2
-
所以<<计算可以记为:A<<B = A乘上B个2。
-
同理,>>计算无非是:A>>B = A除以B个2。
三元运算符
-
?
x ?y:z
如果x是true,则结果为y,否则为z。
举例:
int score = 80; System.out.println(score < 60 ? "不及格":"及格");
来点白玉老师!