目录
一、运算符
-
算术运算符
//二元运算符
//Ctrl+D:复制当前行到下一行
int x=20;
int y=50;
System.out.println(a+b);//70
System.out.println(a/b);//0 不能超出作用域
System.out.println(a/(double)b);//0.4
long z=1236384930031508;
System.out.println(x+y); //int
System.out.println(x+y+z); //long 自动转换式子中容量大的数据类型
//取余运算符/模运算:%
System.out.println(y%x);//y/x 50/20=2.......10(余10)
-
关系运算符
关系运算符返回值的结果:正确/错误,布尔值
-
自增自减运算符
-- ++ 自增,自减 属于一元运算符
int a = 3;
int b = a++; //b=a,a=a+1 先赋值再自增 即b=3 a=4
int c = ++a; //a=a+1,c=a 先自增再赋值 即a=5 c=5
System.out.println(a); //5
System.out.println(b); //3
System.out.println(c); //5
了解:幂运算,如2^3,以及很多特殊的数学类运算都需要借助math类函数
//幂运算 2^3 2*2*2=8
double pow = Math.pow(2,3); // (底数,指数)double型
System.out.println(pow); //8.0
-
逻辑运算符
&&:与(and)运算,有假为假,都为真结果才为真
||:或(or)运算,有真为真
!:非(取反)运算,假为真,真为假
//短路运算
int a=5;
boolean b=(c<4)&&(c++<4);//c<4为false
System.out.println(b);//false
System.out.println(c);//5
//与运算第一个为false,后面就不进行判定了,直接为false
-
位运算
位运算:&、|、^、~、>>、<<、>>>(与二进制有关)
/*
A=0001 1110
B=0010 1101
A&B = 0000 1100 按位与(0假1真 11为真 其余为假)
A|B = 0011 1111 按为或(有一个1就为1)
A^B = 0011 0011 异或 相同为0,不同为1
~B = 1101 0010 取反
*/
/*面试题 2的多次方怎么算最快
2*8=16 2*2*2*2=16
<< 左移
>> 右移
2<<3 <<左移乘2,>>右移除2 效率极高
原理解释:
0000 0001 0
0000 0010 1
0000 0011 2
0000 0100 4
0000 1000 8
0001 0000 16
*/
System.out.println(2<<3);//16
-
扩展运算符
扩展运算符:+=、-=、*=、/=
int a = 10;
int b = 20;
a+=b; // a = a+b
a-=b; // a = a-b
System.out.println(a); //10
//字符串连接符 + ,转化为String类型,然后拼接
System.out.printin(a+b);//30
System.out.println(""+a+b); //1020
System.out.println(a+b+""); //30 先进行运算,再转为String拼接
System.out.println(a+b+"str"); //30str
-
三元运算符
条件运算符:?、:
// x ? y : z
//如果x为真,则结果为y,否则为z
//相当于if(x) y; else z;
int score = 80;
String type = score<60?"及格":"不及格";
System.out.println(type); //及格
二、优先级
下表中上行优先于下行