基本运算符
Java 语言支持如下运算符:优先级最高()
算术运算符 +,-,*,/,%,++,--
赋值运算符 =
关系运算符 >,<,>=,<=,==,!=,instanceof
逻辑运算符 &&,||,!
位运算符 &,|,^,~,>>,<<,>>>(了解!!!)
条件运算符 ? :
扩展赋值运算符:+=,-=,*=,/=
二元运算符
package com.zhen.base;
public class Demo05 {
public static void main(String[] args) {
long a = 123135465446L;
int b = 132;
short c = 354;
byte d = 54;
System.out.println(a+b+c+d); //long
System.out.println(b+c+d); //int
System.out.println(c+d); //int 408
System.out.println((double) c+d); //int 408.0
/*当一个较"小"数据与一个较"大"
的数据一起运算时,系统将自动将"小"数据转换成"大"数据,再进行运算。
任意非long整数作运算,结果总是int型
*/
int a1 = 20;
int a2 = 30;
int a3 = 50;
System.out.println(a1>a2); //false
System.out.println(a1<a2); //true
System.out.println(a1==a2); //false
System.out.println(a1!=a2); //true
//取余,模运算
System.out.println(a2%a1); //10
// a2/a1 30/20 = 1...10
System.out.println(a3%a2); //20
}
}
一元运算符
-
package com.zhen.base;
public class Demo08 {
public static void main(String[] args) {
//一元运算符
int a = 10;
int b = a++; //a++ a = a+1 先给b赋值,再自增
//int b = a;
//int a = a + 1;
int c = ++a; //++a 执行完代码前,先自增,再赋值
System.out.println(a);
System.out.println(b);
System.out.println(c);
//幂运算 2^3 2*2*2
double pow = Math.pow(3,2);
System.out.println(pow);
}
}
逻辑运算符
package com.zhen.base;
//逻辑运算符
public class Demo09 {
public static void main(String[] args) {
//与 (and) 或 (or) 非 (取反)
boolean a = true;
boolean b = false;
/*
与(and):两个变量都为真,结果才为true
或(or):两个变量其中一个为真,结果才为true
非(取反):如果是true,则变为false;如果是false,则变为true;
*/
System.out.println(a&&b); //false
System.out.println(a||b); //true
System.out.println(!(a)); //false
System.out.println(!(a&&b)); //true
//短路运算
int c = 6;
boolean d = ((c>6)&&(c++<6)); //d=false c=6(前面部分已经是false所有直接短路了)
System.out.println(d);
System.out.println(c);
System.out.println("=====================");
boolean e = ((c>5)&&(c++<6)); //e=false c=7
System.out.println(e);
System.out.println(c);
}
}
位运算
package com.zhen.base;
public class Demo10 {
public static void main(String[] args) {
/*
位运算 ,与二进制相关
A=0011 1100
B=0000 1101
A&B 0000 1100
A|B 0011 1101
A^B 0011 0001 异或相同为0,不同为1
~A 1100 0011
<< 相当于*2
>> 相当于/2
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 1000 8
0001 0000 16
*/
}
}
扩展赋值运算符
package com.zhen.base;
public class Demo11 {
public static void main(String[] args) {
int a = 10;
int b = 20;
a+=b;
//a = a + b
System.out.println(a); // a=30
//字符串连接符 +, String
System.out.println(""+a+b); // 3020
System.out.println(""+(a+b)); // 50
System.out.println(""+(int)(a+b)); // 50
System.out.println(a+b+""); //50
}
}
三元运算符
package com.zhen.base;
public class Demo11 {
public static void main(String[] args) {
int a = 10;
int b = 20;
a+=b;
//a = a + b
System.out.println(a); // a=30
//字符串连接符 +, String
System.out.println(""+a+b); // 3020
System.out.println(""+(a+b)); // 50
System.out.println(""+(int)(a+b)); // 50
System.out.println(a+b+""); //50
System.out.println("================");
int c = 5;
int d = 8;
c*=d;
//c = c * d
System.out.println(c);
System.out.println(d);
System.out.println("=================");
int e = 8;
int f = 10;
e/=f; //e=(int)(e/f)???
System.out.println(e); //0
System.out.println((double) e); //0.0
int e1 = 8;
int f1 = 10;
System.out.println((double) e1/f1); //0.8
System.out.println(e1/f1); //0.0,因为是int类型
float e2 = 8;
e2/=f1;
//e2 = e2 / f1;
System.out.println(e2); // 0.8
}
}