- 算术运算符:+加,-减,*乘,/除,%取余,++,--
- 赋值运算符:=把右边赋值给左边
- 关系运算符:>大于,<小于,>=大于等于,<=小于等于,==等于,!=不等于,instanceof
- 逻辑运算符:&&与,||或,!非
- 与:两真为真,真假为假,两假为假
- 或:两真为真,真假为真,两假为假
- 非:真假反过来
- 位运算符:&,|,^,~,>>,<<,>>>
- 条件运算符?:
- 扩展赋值运算符:+=,-=,*=,/=
public class Demo1 {
public static void main(String[] args) {
//算术运算
int a =10;
int b =20;
long c =1433_2233_3333_333L;
short d =8;
byte e = 5;
int f = 11;
int aa = a++;//a=a+1 a为10,执行后+1 先给aa赋值10,再自增a为11
int aaa = ++a;//a=a+1 a为10,执行前+1 先自增a为12(因为上一行已经11了),再给aaa赋值12
System.out.println(a+b);//30
System.out.println(a-b);//-10
System.out.println(a*b);//200
System.out.println(a/b);//0 应为0.5,int类型没小数,缩略成0
System.out.println(a/(double)b);//0.5
System.out.println(b+c+d+e);//143322333333366 其中有long结果就是long类型,同理有double就为double
System.out.println(b+d+e);//33 int
System.out.println(d+e);//13 int
System.out.println(f%a);//1
System.out.println(aa);//10
System.out.println(aa);//10
System.out.println(aaa);//12
System.out.println(aaa);//12
//关系运算
System.out.println(a>b);//F
System.out.println(a<b);//T
System.out.println(a==b);//F
System.out.println(a!=b);//T
//幂运算2^3 很多运算会使用工具类
double z = Math.pow(2,3);
System.out.println(z);//8.0
//逻辑运算
boolean x = true;
boolean y = false;
System.out.println("x && y:"+(x&&y));//x真y假,x与y假
System.out.println("x || y:"+(x||y));//x真y假,x或y真
System.out.println("!(x && y):"+!(x&&y));//x真y假,x与y假,非x与y真
//短路运算
int g = 5;
boolean h = (g<4)&&(g++<10);
System.out.println(h);//false (g=5 <4)为假 与运算有假即为假 所以不运算后面的g++ 因此g还是5
System.out.println(g);//5 若&&改为||则为6 或运算两假才为假 所以会继续运算g++ 5递增为6
//位运算:效率极高
/*
A = 0011 1100
B = 0000 1101
位运算看对应位置的数,第一位0和0,第二位0和0,第三位1和0,第四位1和0,第五位1和1,第六位1和1,第七位0和0,第八位0和1
A&B = 0000 1100 //与
A|B = 0011 1101 //或
A^B = 0011 0001 //0和0、1和1相同则为0,0和1不同则为1
~A = 1100 0011 //取反
*/
System.out.println(2<<3);//16 2左移3位 2的二进制0000 0001 16的二进制0000 1000 1左移了三位 左移乘2右移除2
//扩展赋值运算
int i = 10;
int j = 20;
i+=j;//i = i+j
System.out.println(i);//30 10+20
i-=j;//i = i-j
System.out.println(i);//10 30-20
//字符串连接符 +
System.out.println(i+j);//30 10+20
System.out.println(""+i+j);//1020 字符串在前面,后面的+不再是运算而是拼接
System.out.println(i+j+"");//30 字符串在后面,影响不到前面的+运算,只能影响后面的
//三元运算符
int score = 80;
String type = score <60 ? "不及格" : "及格";//及格 x?y:z 满足x则y否则z 必须掌握
System.out.println(type);
}
}