运算符集合 0920
*全文参考 1
算术运算符
int a= 10;
int b = 5;
int c =21;
int d = 18;
加 +
a+b = 15
减 -
a-b=5
乘 *
a*b=50
除 /
a/b=2
自增 ++ 自减 –
b=++a 前缀先进行自增或者自减运算,再进行表达式运算
System.out.println(“自增运算符前缀运算后a=”+a+";“b=”+b);
结果:
a=11
b=11
运算过程: a=a+1=11 b=a=11
b=a-- 后缀先进行表达式运算,再进行自增或者自减运算
System.out.println(“自减运算符后缀运算后a=”+a+";“b=”+b);
结果:
a=11
b=10
运算过程: b=a=10 a=a+1=11
取余 %
a%b=0
关系运算符
等于 ==
不等 !=
大于 >
小于 <
大于等于 ≥
小于等于 ≤
public class Test {
public static void main(String[] args) {
int a = 7;
int b = 18;
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 = " + (a < b) );
System.out.println("b >= a = " + (b >= a) );
System.out.println("b <= a = " + (b <= a) );
}
}
a == b = false
a != b = true
a > b = false
a < b = true
b >= a = true
b <= a = false
位运算符
(存疑:)位运算的应用场景?实际应用中需要转换成2进制按位运算的原因是什么?(已在笔记-1011中解答)
Java定义了位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。
位运算符作用在所有的二进制位上,并且按位运算。
若
A = 0011 1100 = 60
B = 0000 1101 = 13
- A&B = 0000 1100 = 12
如果相对应位都是1,则结果为1,否则为0 - A | B = 0011 1101 = 61
如果相对应位都是 0,则结果为 0,否则为 1 - A ^ B = 0011 0001 = 49
如果相对应位值相同,则结果为0,否则为1 - ~A= 1100 0011 = -61
按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 - A << 2 = 1111 0000 = 240
按位左移运算符。左操作数按位左移右操作数指定的位数。 - A >> 2 = 1111 = 15
按位右移运算符。左操作数按位右移右操作数指定的位数。 - A>>>2 = 0000 1111 = 15
按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。
逻辑运算符
且(同真则真) &&
&& 是短路逻辑运算符,即一旦判断到一个假,就不会继续判断下去,直接输出结果为FALSE。
例:
boolean A=FALSE
boolean B=TRUE
则
boolean A&&B=FALSE
boolean A&&!B=FALSE
boolean !A&&B=TRUE
或(存真则真) | |
例:
boolean A=FALSE
boolean B=TRUE
则
boolean A&&B=TRUE
boolean A&&!B=FALSE
boolean !A&&B=TRUE
反转逻辑状态 !
例:
boolean B=TRUE
boolean A=FALSE
则
boolean !B=FALSE
boolean !(A||B)=FALSE
赋值运算符
简单赋值 =
先算数/位运算,再赋值 ±*%^&|
例:c+=a 等价于 c=c+a
public class Test {
public static void main(String[] args) {
//15的二进制是1111
int a = 15;
//22的二进制是10110
int b = 22;
int c = 0;
c = a + b;
System.out.println("c = a + b = " + c );
c += a ;
System.out.println("c += a = " + c );
c -= a ;
System.out.println("c -= a = " + c );
c *= a ;
System.out.println("c *= a = " + c );
a = 10;
c = 15;
c /= a ;
System.out.println("c /= a = " + c );
a = 10;
c = 15;
c %= a ;
System.out.println("c %= a = " + c );
c <<= 2 ;
System.out.println("c <<= 2 = " + c );
c >>= 2 ;
System.out.println("c >>= 2 = " + c );
c >>= 2 ;
System.out.println("c >>= 2 = " + c );
c &= a ;
System.out.println("c &= a = " + c );
c ^= a ;
System.out.println("c ^= a = " + c );
c |= a ;
System.out.println("c |= a = " + c );
}
}
- 结果
变量 | 二进制 | 十进制 |
---|---|---|
a | 15 | 01111 |
b | 22 | 10110 |
C | 0 | 00000 |
代码结果 | 二进制 | 注释:十进制 |
---|---|---|
c = a + b | 37 | 100101 |
c += a | 52 | 110100 |
c -= a | 37 | 100101 |
c *= a | 555 | 1000101011 |
c /= a | 37 | 100101 |
c %= a | 22 | 10110 |
c <<= 2 | 24 | 11000 |
c >>= 2 | 6 | 110 |
c &= a | 6 | 110 |
c ^= a | 9 | 1001 |
c|= a | 15 | 1111 |
其他运算符
条件运算符(?:)
// (条件)?条件结果为TRUE执行(存疑):条件结果为FALSE执行(存疑)
“:”左右能写表达式嘛,还是只能写值。即是判断条件后执行XX,还是赋值XX(可以写表达式,比如计算式,但是不能写语句!!!表达式≠语句)
表达式:variable x = (expression) ? value if true : value if false
public class Test {
public static void main(String[] args){
int a , b;
a = 25;
b = 10;
// 取较大的值赋给b
b = (a ≥ b) ? a : b;
System.out.println( "Value of b is : " + b );
}
}
结果: b=25
instanceof 运算符
- *// (被检查的对象)instanceof (父类/可兼容的接口类型/类型)
表达式:( Object reference variable ) instanceof (class/interface type)
class People{}
public class Man extends people{
int age =0;
public static void main(String[] args){
Man James = new Man();
int James.age = 18 ;
boolean result = James instanceof Man;
boolean result2 =( James.age ) instanceof (int)
boolean result3 =( James.age ) instanceof (age)
boolean result4 =( 18 ) instanceof (int)
boolean result4 =( 18 ) instanceof (age)
System.out.println(result);
System.out.println(result2);
System.out.println(result3);
}
}
结果:
true
true(存疑)
true(存疑)
true(存疑)
true(存疑)
运算符优先级
优先级从高到低:
类别 | 操作符 | 关联系 |
---|---|---|
后缀 | () [] . | 左到右 |
一元 | + + - !〜 | 右到左 |
乘除取余 | * /% | 左到右 |
加减自增减(存疑) | + - ++ – | 左到右 |
移位 | >> >>> << | 左到右 |
关系 | >> = << = | 左到右 |
相等不等 | == != | 左到右 |
按位与 | & | 左到右 |
按位异或 | ^ | 左到右 |
按位或 | | | 左到右 |
逻辑于/且 | && | 左到右 |
逻辑或 | || | 左到右 |
条件 | ?: | 右到左 |
赋值 | = += -= *= /= %= >>= <<= ^= |= | 右到左 |
逗号 | , | 左到右 |