运算符
- 算术运算符:+ - * / % ++ --
- 赋值运算符:=
- 关系运算符:> < >= <= == != instanceof
- 逻辑运算符:&& || !
- 位运算符:& | ^ ~ >> << >>>
- 条件运算符:?:
- 拓展赋值运算符:+= -= *= /=
二元运算符
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/(double)b);
}
运算拓展
- **如果多个数运算时,里面有Long,那么结果类型为Long类型,否则全为Int类型。**
- **如果多个数运算时,里面有double,那么结果类型为double类型,否则全为float类型。**
public static void main(String[] args) {
// 如果多个数运算时,里面有Long,那么结果类型为Long类型,否则全为Int类型。
long a = 134348837L;
int b = 13634;
short c = 17;
byte d = 2;
System.out.println(a+b+c+d); //Long
System.out.println(b+c+d); //Int
System.out.println(c+d); //Int
// 如果多个数运算时,里面有double,那么结果类型为double类型,否则全为float类型。
float f = 12.8f;
double e = 1248.87;
System.out.println(f+e); //double
System.out.println(f+f); //float
}
关系运算符
public static void main(String[] args) {
// 关系运算符:正确or错误
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);
}
自增自减运算符
public static void main(String[] args) {
// 自增
int a = 3;
int b = a++; // 先赋值操作,再自加操作
int c = ++a; // 先自加操作,再赋值操作
System.out.println(a);
System.out.println(b);
System.out.println(c);
// 自减
int d = 3;
int e = d--; // 先赋值操作,再自减操作
int f = --d; // 先自减操作,再赋值操作
System.out.println(d);
System.out.println(e);
System.out.println(f);
}
幂运算
public static void main(String[] args) {
// 幂运算 2^3=2*2*2=8
double m = Math.pow(2, 3);
System.out.println(m);
}
逻辑运算符
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)); //逻辑非运算:如果为真,则为假;如果为假,则为真。
// 短路运算
// 逻辑与运算:如果第一个变量为假,则不必继续运算,直接输出结果为假。
// 逻辑或运算:如果第一个变量为真,则不必继续运算,直接输出结果为真。
}
位运算
A = 0011 1100
B = 0000 1101
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~B = 1111 0010
//面试题
计算 2*8=16
转化为 2*2*2*2 = 16
运算规则:<< *2 (左移乘2)
>> /2 (右移除2)
0000 0000 0
0000 0001 1
0000 0010 2 *
0000 0011 3
0000 0100 4 *
0000 1000 8 *
0001 0000 16 *
故运算结果为:2<<3 = 16 (2向左移动3位得到16)
字符串连接符
public static void main(String[] args) {
int a = 10;
int b = 20;
a+=b; //a = a + b
a-=b; //a = a - b
System.out.println(a);
//面试题
//字符串连接符(先到先得原理)
System.out.println(""+a+b); //字符串连接符在前面则结果为字符串相连
System.out.println(a+b+""); //字符串连接符在后面则进行前面的运算
打印结果:1020
30
}