4.5.Java基础语法之运算符
Java语言支持如下运算符:
public class Demo01 {
public static void main(String[] args) {
//二元运算符
int a = 10;
int b = 20;
int c = 30;
int d = 40;
int e = 3;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/(double)b);
System.out.println(a%e);//取余,模运算
}
}
public class Demo02 {
public static void main(String[] args) {
long a = 123123123123123L;
int b = 123;
short c = 10;
byte d = 8;
System.out.println(a+b+c+d);//long
System.out.println(b+c+d);//int
System.out.println(c+d);//int
/*运算规则:先将运算级统一为该运算中最高级的数据类型后再运算
无long类型时,输出默认为int
低-------------------------------------------------------->高
byte,short,char->int->long->float->double
*/
}
}
public class Demo04 {
public static void main(String[] args) {
//++,-- 自增,自减 一元运算符
int a = 3;
int b = a++; //执行完这行代码后,先给b赋值,再自增
//a++ a = a+1;
System.out.println(a);
//++a a = a+1;
int c = ++a; //执行完这行代码前,先自增,再给c赋值
System.out.println(a);
System.out.println(b);
System.out.println(c);
//幂运算 2^3=8
double pow = Math.pow(2,3);
System.out.println(pow);
}
}
-
赋值运算符:=
-
关系运算符:> , < , >= , <= , == , != instanceof
public class Demo03 {
public static void main(String[] args) {
//关系运算符返回的结果:正确,错误 布尔值
int a = 10;
int b = 20;
System.out.println(a>b);
System.out.println(a<b);
System.out.println(a>=b);
System.out.println(a<=b);
System.out.println(a==b);
System.out.println(a!=b);
}
}
-
逻辑运算符:&& , || , !
public class Demo05 {
public static void main(String[] args) {
//与或非
boolean a = true;
boolean b = false;
System.out.println("a && b:"+(a&&b));
System.out.println("a || b:"+(a||b));
System.out.println("!(a && b):"+!(a&&b));
//短路运算
int c = 5;
boolean d = (c<4)&&(c++<4);
System.out.println(d);
System.out.println(c);//c++并未执行
}
}
-
位运算符(了解):&,| , ^ , ~ , >> , << , >>>
public class Demo06 {
public static void main(String[] args) {
/*
位运算 效率极高
A = 0011 1100
B = 0000 1101
A&B = 0000 1100
A|B = 0011 1101
A^B = 1100 1110 相同为1,不同为0
~B = 1111 0010 取反
*/
/*
2*8怎么运算最快 2*2*2*2=16
<< 左移,相当于 *2
>> 右移,相当于 /2
0000 0001 1
0000 0010 2
0000 1000 8
0001 0000 16
*/
System.out.println(2<<3);
}
}
-
条件运算符:” ? !“
public class Demo08 {
public static void main(String[] args) {
//三元运算符
//x?y:z
//如果x==true,则结果为y,否则为z
int score = 80;
String type = score < 60 ? "不及格":"及格";
System.out.println(type);
}
}
-
扩展赋值运算符:+=,-=,*=,/=
public class Demo07 {
public static void main(String[] args) {
int a = 10;
int b = 20;
a+=b;//a=a+b
System.out.println(a);
a-=b;//a=a-b
System.out.println(a);
//字符串连接符
System.out.println(a+b);
System.out.println(""+a+b);//会连接a,b
System.out.println(a+b+"");//会先计算a+b
}
}
-
Java运算符优先级列表
优先级 | 运算符 | 简介 | 结合性 |
---|---|---|---|
1 | [ ] 、. 、( ) |
方法调用,属性获取 | 从左向右 |
2 | !、~、 ++、 -- | 一元运算符 | 从右向左 |
3 | * 、/ 、% | 乘、除、取模(余数) | 从左向右 |
4 | + 、 - | 加减法 | 从左向右 |
5 | <<、 >>、 >>> | 左位移、右位移、无符号右移 | 从左向右 |
6 | < 、<= 、>、 >=、 instanceof | 小于、小于等于、大于、大于等于, 对象类型判断是否属于同类型 | 从左向右 |
7 | == 、!= | 2个值是否相等,2个值是否不等于。 下面有详细的解释 | 从左向右 |
8 | & | 按位与 | 从左向右 |
9 | ^ | 按位异或 | 从左向右 |
10 | | | 按位或 | 从左向右 |
11 | && | 短路与 | 从左向右 |
12 | || | 短路或 | 从左向右 |
13 | ?: | 条件运算符 | 从右向左 |
14 | =、 += 、-= 、*= 、/=、 %=、 &=、 |=、 ^=、 <、<= 、>、>= 、>>= | 混合赋值运算符 | 从右向左 |