运算符
-
算术运算符 + - * / % ++ --
int num1 = 12;
int num2 = 5;
int result = num1/ num2;//2
double result1 = num1 / num2;//2.0
double result2 = (double)num1 /num2;//2.4
double result3 = num1 / (nmu2 + 0.0);//2.4
% :结果的符号与被模数一致
前++ 先+1,后运算 不会改变原来的数据类型
后++ 先运算,后+1
short s1 = 10;
s1 = s1 +1;//编译不通过,short与int运算结果为int
s1 ++;//自增一,不会改变原来的数据类型
byte b =127;
b++;//-128
-
赋值运算符 = ,/= ,*= ,+=,-= 不改变数据类型
short s = 10;
s1 += 2;//12,不会改变数据类型
int i = 1;
i *= 0.1;//编译通过,*=不改变数据类型,还为int型 ,0
int n = 10;
n += (n++)+(++n);//32 n=n+(n++)+(++n)
-
比较运算符(关系运算符)== , != ,>= , <= , > , < , instanceof (是否为类的对象)
运算结果都是boolean型
int i = 10;
int j = 20;
System.out.println( i == j );//false
System.out.println( i = j ); //20
-
逻辑运算符 & (逻辑与),|, !,&&(短路与),||,^(逻辑异或)
用来运算boolean类型数据
& 与 && 运算结果相同
boolean x = true;
boolean y = false;
short z = 42;
if (y == true) ;
if ((z++ == 42) && (y = true)) z++;
if ((x = false) || (++z == 45)) z++;
System.out.println("z = " + z); //46
//boolean a = false;
// if (a = true) {//先赋值,再进行if判断 a=true;if(a)
//System.out.println("a = true" );
//}
-
位运算符 << , >> , >>> ,& , |,^ , ~ (没有定义<<<)
位运算符操作的都是整形的数据, 左移几位就乘以2几次方
//交换两个变量的值
//方法一:中间变量
//方法二:
int a = 10;
int b = 20;
a = a + b;//a = 30,b = 20
b = a - b;//a = 30,b = 10
a = a - b;//a = 20,b = 10
//方法三:位运算符
a = a ^ b;
b = a ^ b;
a = a ^ b;//a=(a^b)^b
运算符的优先级
只有 单目,三元,赋值运算符 是从右到左运算的