一、算术运算符
运算符 含义 A = 20 B = 10 A 运算符 B + 求和 20 10 30 - 相减 20 10 10 * 相乘 20 10 200 / 相除 20 10 2 % 取余 20 10 0 ++ 左自增 A++;21 B++;11 C = A++;20 ++ 右自增 ++A;21 ++B;11 C = ++A;21 -- 左自减 A--;19 B--;9 C = A--;20 -- 右自减 --A;19 --B;9 C = --A;19
注意事项:
1. 先乘除,后加减
2. 从左至右运行
3. 除数不能为0
1.1 小括号的使用
1. Java的表达式中,只有小括号“()”,无中括号“[]”和大括号“{}”
2. 先运算小括号里面的内容。优先级最高的是小括号。
3. 好习惯,表达式较复杂时,多多使用小括号包裹。
1.2 +
int a = 1 + 1 ;
String str = "www." + "baidu." + "com" ;
int b = 1 ;
1.3 ++(–)
int num1 = 10 ;
int num2 = num1++ ;
int num3 = ++ num1;
num1++ ;
num1 += 1 ;
byte b1 = 65 ;
byte b2 = b1 + 1 ;
byte b3 = ++ b1;
byte b4 = ( b1 += 1 ) ;
常见面试题
int num = 5 ;
int ret = num++ * ++ num;
int num = 5 ;
++ ( num++ ) ;
二、赋值运算符
运算符 含义 a = 20, b = 10(0000 1010) 结果 = 赋值 c = a + b c = 30 + = 先相加,后赋值 b + = a 等价于b = b + a 30 - = 先相减,后赋值 b - = a等价于b = b - a -10 * = 先相乘,后赋值 b * = a等价于b = b * a 200 / = 先相除,后赋值 b / = a等价于b = b / a 0.5 %= 先取模,后赋值 b %= a等价于b = b % a 0 <<= 先左移位,后赋值 b << = 2等价于b = b << 2 0010 1000 >>= 先右移位,后赋值 b >> = 2等价于b = b >> 2 0000 0010 &= 先按位与,后赋值 b &= 2等价于b = b&2 0000 0010 ^ = 先按位异或,后赋值 b ^= 2等价于b = b ^ 2 0000 1000 | = 先按位或,后赋值 b |= 2等价于b = b | 2 0000 1010
三、逻辑运算符
运算符 含义 a b c = a 运算符 b && 与,同真则真、遇假则停 true true true || 或,有真则真 、遇真则停 true false true ! 取反 - true false & 与,同真则真 true true true | 或,有真则真 true false true
四、关系(比较)运算符
运算符 含义 A = 20 , B = 10 结果 == 是否相等 A == B false != 是否不相等 A != B true > 是否大于 A > B true < 是否小于 A < B false > = 是否不小于 A >= B true <= 是否不大于 A <= B false
五、位运算符
运算符 含义 a = 60 (0011 1100),b = 13(0000 1101) c & ,全1则1 c = a & b 12(0000 1100) | 或,有1则1 c = a | b 61(0011 1101) ^ 异或,不相同则1 c = a ^ b 49(0011 0001) 〜 补,翻转 c = 〜a -60(1100 0011) << 左移 c = a << 2 240(1111 0000) >> 右移 c = a >> 2 15(1111) >>> 右移补零,左空位补零 c = a >>> 2 15(0000 1111)
六、条件(三元)运算符
语法:变量 = 表达式 ? 真时执行的语句: 假时执行的语句;
public class Test {
public static void main ( String [ ] args) {
int a = 2 ;
String b;
b = ( a > 1 ) ? 'a大于1' : 'a不大于1' ;
System. out. println ( b) ;
}
}
七、instanceOf 运算符
作用:判断对象实例是否是一个特定类型(类类型或接口类型) 语法:( Object reference variable ) instanceOf (class/interface type) 特点:
变量所指的对象,是(class/interface)的一个对象,则为真。 变量所指的对象,兼容于右侧类型,则为真。
String name = '张三' ;
boolean result = name instanceOf String ;
class Vehicle { }
public class Car extends Vehicle {
public static void main ( String [ ] args) {
Vehicle BMW = new Car ( ) ;
boolean result = BMW instanceof Car ;
}
}
八、运算符优先级
优先级 类别 运算符 优先级 1 后缀 () 、 [] 、 . (点操作符) 左到右 2 一元 +、 + - 、!、〜 从右到左 3 乘性 *、 /、% 左到右 4 加性 +、 - 左到右 5 移位 >>、 >>>、 << 左到右 6 关系 >> =、 << = 左到右 7 相等 ==、 != 左到右 8 按位与 & 左到右 9 按位异或 ^ 左到右 10 按位或 | 左到右 11 逻辑与 && 左到右 12 逻辑或 | | 左到右 13 条件 ?、: 从右到左 14 赋值 =、 + =、 - =、 * =、 / =、%=、 >> =、 << =、&=、 ^ = 、| = 从右到左 15 逗号 , 左到右