java运算符
运算符
- 运算符是干什么用的?
运算符是用于处理数据运算操作的,就是处理运算的操作符,像数学中的加、减、乘、除等等
- 运算符分类
运算符分为了以下几类:
- 算术运算符: +(加) , - (减), *(乘), /(除) , %(取余)
int a = 10;
int b = 10;
int c = a + b;//加法
int d = c - a;//减法
int e = a * b;//乘法
int f = e / a;//除法
int g = f % a;//余数
//结果 c=20;d=10;e=100;f=10;g=0;
Systeam.out.print(c + "##" + d + "##" + e + "##" + f + "##" + g);
- 自增自减运算符:++(自增),–(自减)
int a = 0;
Systeam.out.println(a++);//输出为0
Systeam.out.println(++a);//输出为2
口诀:++(–)在前,先增加(减少)后运用,++(–)在后,先运用后增加(减少)
int a = 0;
a++;
Systeam.out.println(a);//结果是1
int b = 0;
++b;
Systeam.out.println(b);//结果是1
为什么Systeam.out.println(a++)与 a++; Systeam.out.println(a)输出的结果不一样呢?
解析:第一个输出语句是先用a的值输出结果后,再进行自增操作;第二个输出语句,a++;已经用a了,只是没有赋值操作,a++与++b在没有赋值操作时,效果是一样的,先增加,加完后,进行下面流程。
//小案例
int a = 0;
int c = a++ + (++a);
Systeam.out.println(c);//c的结果是多少呢?自己思考吧?也许和你想的答案不一样。
-
逻辑运算符:&(与) , (或) , !(非) ,&&(逻辑与), (逻辑或)
boolean a = true;
boolean b = false;
Systeam.out.println(a & b);//false
Systeam.out.println(a | b);//true
Systeam,out.pringln(!a);//false
//短路现象
int a = 3;
Systeam.out.println(a<3 &&(++a)<4);//结果为false
Systeam.out.println(a);//a值是多少呢?
Systeam.out.println(a<3 &(++a)<4);//结果为false
Systeam.out.println(a);//a值是多少呢?
</br>
- 关系运算符:>(大于)、<(小于)、==(等于)、!=(不等于)、>=(大于等于)、<=(小于等于)
int a = 3;
int b = 4;
Systeam.out.println(a > b);//结果:false
Systeam.out.println(a < b);//结果:true
Systeam.out.println(a == b);//结果:false
Systeam.out.println(a != b);//结果:true
Systeam.out.println(a >= b);//结果:false
Systeam.out.println(a <= b);//结果:true
关系运算符与数学中的判断是通用的。
</br>
-
位运算符:&(按位与), (按位或),^(异或),«(左移), »(右移), »>(无符号右移)
int a = 1;
int b = 2;
int c = 8;
//结果自己去看看
Systam.out.println(a & b);
Systeam.out.println(a | b);
Systeam.out.println(a ^ b);
Systeam.out.println(b << 2);
Systeam.out.println(c >> 3);
Systeam.out.println(c >>> 3);
&, | 在双方式boolean类型时是逻辑运算符,双方不是boolean类型时为位运算符。前提看双方 |
</br>
- 赋值运算符:+=(加等于), -=(减等于),/=(除等于)……
byte a = 1;
int b = 2;
a += b; //等价于 a =(byte)(a + b);以下仿照思考
a *= b;
a /= b;
a %= b;
........
//有太多了,一般用于简单运算
//思考
byte a = 0;
a += 10;
Systeam.out.println(a);//有无结果输出呢? 请联系类型转换思考?
</br>
- 运算符的优先级