JAVA运算符
算数运算符:+ - * / % ++ --
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,那最后的结果也是long
//如果没有long,则结果都为int(无论有没有int类型)
}
int a = 10;
int b = 20;
int c = 21;
System.out.println(c%a);//取余 //1
自增&自减
//++(自增) --(自减),一元运算符
int a = 3;
int b = a++; //a++代表执行完这行代码后,先给b赋值,a再自增
//→b=3,a=4
System.out.println(a);//4
int c = ++a; //++a代表执行完这行代码后,a先自增,再给c赋值
//→a=5,c=5
System.out.println(a);//5
System.out.println(b);//3
System.out.println(c);//5
//--同理可得
补充:
//幂运算(如果要用JAVA计算2^3即2*2*2=8的话)
double pow = Math.pow(2, 3); //Math.pow(2,3);补全返回值
System.out.println(pow);
//补充返回值快捷键:Command+Option+V
赋值运算符:=
关系运算符:> < >= <= == != instanceof
public static void main(String[] args) {
//关系运算符返回的结果:true or false
//常和if一起使用
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);
}
逻辑运算符:&& || !
//与(and)或(or)非(取反)
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));//如果真则为假,如果假则为真
注意:短路运算
/**短路运算
* 如果改成System.out.println("a && b: "+(b&&a));
* 由于b为false,所以事实上&a));不被执行就能够直接判定为false
* 实验可证*/
int c =5;
boolean d = (c<4)&&(c++<4);
System.out.println(d);//false
System.out.println(c);//c=5
//若执行了后面的(c++<4)则c应该会自增变为6,然而结果c=5,说明没有被执行。
位运算符:& | ^ ~ >> << >>>
与逻辑运算异曲同工。
-
&(与):两个同为1则为1
-
|(或):两个中一个为1就为1
-
~(非):两个同为1则为0(与&取反)
-
^(异或):两个一样则为0,不一样则为1
/*
E.g.
A = 0011 1100
B = 0000 1101
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
A~B = 1111 0011
*/
-
<<(左移):相当于*2
-
<<(右移):相当于/2
/*
解释:
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 2
0000 0100 4
0000 1000 8
0001 0000 16
*/
System.out.println(2<<3);//2左移3位,相当于2^3=16
位运算因为便于计算机理解和执行,所以效率很高。
条件运算符:? :
(三元运算符)
/*
x ? y : z
如果x==true,则结果为y,否则结果为z
*/
int score = 80;
String type = score <60 ?"不及格":"及格";
System.out.println(type);
//虽然用if也可以,但这种方法比较偷懒,还让代码变的精简,所以必须掌握
扩展赋值运算符:+= -= *= /=
- +=:相当于○=○+△
- -=:相当于○=○-△
int a = 10;
int b = 20;
a+=b; //相当于a=a+b
a-=b; //相当于a=a-b
字符串连接符: +
//字符串连接符 +
System.out.println(""+a+b);//1020
System.out.println(a+b+"");//30
//若在+任意一侧出现字符串""(String类),则会自动将其他也转换成String类
//需要注意的是,若""在前面,后面的会拼接;若""在后面,会先运算完前面的再拼接