04-基本运算符
①.运算符列表
- Java支持以下运算符
类型 | 符号 |
---|---|
算数运算符 | + - * / % ++ - - |
赋值运算符 | = |
关系运算符 | > < >= <= == != intstanceof |
逻辑运算符 | && || ! |
位运算符 | & | ^ ~ >> << >>> |
条件运算符 | ?: |
扩展运算符 | += -= *= /= |
数据类型提升
规则:
1.byte,short,char在参与运算时,会自动提升为int类型,他们三个之间不存在提升。
2.如果还有long,float,double,相应的提升为long,float,double.
3.若long,float同时有,提升为float
4.若long,float,double同时存在,则提为double
//数据类型提升
long l1 = 1234567890L;
int i1 = 123;
short s1 = 10;
byte b1 = 9;
System.out.println(l1 + i1 + s1 + b1); //输出long类型
System.out.println(i1 + s1 + b1); //输出int类型
System.out.println(i1 + b1); //输出int类型
②.自增自减运算符——++ - -
- b = a++; 先执行赋值操作,再执行自增操作
- b = ++a; 先执行自增操作,再执行赋值操作
//一元运算符
int one = 3;
int one1 = one++; //先将one赋值给one1再进行one的自增运算
int one2 = ++one; //先进行one的自增运算再将one赋值给one2
System.out.println(one); //输出:5
System.out.println(one1); //输出:3
System.out.println(one2); //输出:5
③.关系运算符——> < >= <= == !=
关系运算符的返回值为 布尔值boolean 只有 true 和 false 两种结果
④.逻辑运算符 && || !
执行与(and)或(or)非(取反)操作,结果是true或者false。
//逻辑运算符
boolean bool1 = true;
boolean bool2 = false;
System.out.println("bool1 && bool2 " + (bool1&&bool2)); //输出false,两个全真才真
System.out.println("bool1 || bool2 " + (bool1 || bool2)); //输出true,两个全假才假
System.out.println("!bool1 " + !bool1); //输出false,直接取反
//短路运算
int c = 5;
boolean d = (c<4)&&(c++<10); //若没有发生短路,则该条语句结束后,c的值将变为6
System.out.println(c); //可以证明已经发生短路现象
System.out.println(d); //d在第一个表达式为false之后已经直接false
⑤.位运算符 & | ! >> <<
//位运算符
/*
* 逻辑与、逻辑或、逻辑非、逻辑异或
* A = 0011 1100
* B = 0000 1101
* A&B = 0000 1100
* A|B = 0011 1101
* A^B = 0011 0001 //异或,不同则1,相同则0
* ~B = 1111 0010
*
* 移位运算符>> <<
* <<相当于*2
* >>相当于/2
* */
⑥.条件、扩展赋值运算符 += -= *= /=
//扩展赋值运算符
int aa = 10;
int bb = 20;
aa += bb;
System.out.println(aa); //输出30,上式等于aa = aa + bb
⑦.字符串连接符 +
//字符串连接符 +
int aa = 10;
int bb = 20;
System.out.println("" + aa + bb); //输出1020,当输出的内容遇到String类型时+变为连接符
System.out.println(aa + bb + ""); //输出30,先运算aa + bb在连接字符串
⑧.条件(三元)运算符 ? :
//三元运算符 x?Y:Z 若x为true则结果为Y,否则结果为Z
int score = 90;
String result = score < 60?"不及格":"及格";
System.out.println(result);