java运算符

java运算符

运算符

  1. 运算符是干什么用的?

运算符是用于处理数据运算操作的,就是处理运算的操作符,像数学中的加、减、乘、除等等


  1. 运算符分类

运算符分为了以下几类:

  1. 算术运算符: +(加) , - (减), *(乘), /(除) , %(取余)
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);


  1. 自增自减运算符:++(自增),–(自减)
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的结果是多少呢?自己思考吧?也许和你想的答案不一样。


  1. 逻辑运算符:&(与) , (或) , !(非) ,&&(逻辑与),   (逻辑或)
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>

  1. 关系运算符:>(大于)、<(小于)、==(等于)、!=(不等于)、>=(大于等于)、<=(小于等于)
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>

  1. 位运算符:&(按位与), (按位或),^(异或),«(左移), »(右移), »>(无符号右移)
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>

  1. 赋值运算符:+=(加等于), -=(减等于),/=(除等于)……
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>

  1. 运算符的优先级

img