运算符
operator
运算符优先级
Operators 操作员 | Precedence 优先级 |
---|---|
postfix 后缀 | expr++ expr-- |
unary 一元的 | ++expr --expr +expr -expr ~ ! |
multiplicative 〔数〕乘法的 | / % |
additive 添加剂 | + - |
shift 移动 | << >> >>> |
relational 关系的 | < > <= >= instanceof |
equality 平等 | == != |
bitwise AND 按位 AND | & |
bitwise exclusive OR 按位异或 | ^ |
bitwise inclusive OR 按位包含或 | | |
logical AND 逻辑与 | && |
logical OR 逻辑或 | || |
ternary 三进制的 | ? : |
assignment 赋值 | `= += -= *= /= %= &= ^= |
赋值运算符
=
算术运算符
Operator | Description 描述 |
---|---|
+ | Additive operator (also used for String concatenation) 加法运算符(也用于字符串连接) |
- | Subtraction operator 减法运算符 |
* | Multiplication operator 乘法运算符 |
/ | Division operator |
% | Remainder operator 余数运算符 |
一元运算符
Operator | Description 描述 |
---|---|
+ | Unary plus operator; indicates positive value (numbers are positive without this, however) 一元加运算符; 表示正值(数字为 但是,如果没有这个,就是正的) |
- | Unary minus operator; negates an expression 一元减运算符; 对表达式求反 |
++ | Increment operator; increments a value by 1 增量运算符; 将值增加1 |
-- | Decrement operator; decrements a value by 1 递减运算符; 将值递减1 |
! | Logical complement operator; inverts the value of a boolean 逻辑补码运算符; 反转布尔值 |
++a 和 a++ 的区别是 对于复杂的表达式:++a会先递增,再运算;a++会先运算后递增
比较运算符
== >=
逻辑运算符
操作元是boolean型数据
操作符 | 描述 | 例子 | 结合方向 |
---|---|---|---|
&&,& | 称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。 | (A && B)为假。 | 从左到右 |
| | | 称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。 | (A | | B)为真。 | 从左到右 |
! | 称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。 | !(A && B)为真。 | 从右到左 |
&&:”短路“运算符,如左边式子为假,则不判断右边,整体为假 |
---|
&:”非短路“运算符,判断两边的式子 |
三元运算符
result = someCondition ? value1 : value2;//true 返回value1
类型比较运算符
instanceof
instanceof 运算符将对象与指定的类型进行比较。您可以使用它来测试对象是类的实例、子类的实例,还是实现特定接口的类的实例。
class InstanceofDemo {
public static void main(String[] args) {
Parent obj1 = new Parent();
Parent obj2 = new Child();
System.out.println("obj1 instanceof Parent: "
+ (obj1 instanceof Parent));
System.out.println("obj1 instanceof Child: "
+ (obj1 instanceof Child));
System.out.println("obj1 instanceof MyInterface: "
+ (obj1 instanceof MyInterface));
System.out.println("obj2 instanceof Parent: "
+ (obj2 instanceof Parent));
System.out.println("obj2 instanceof Child: "
+ (obj2 instanceof Child));
System.out.println("obj2 instanceof MyInterface: "
+ (obj2 instanceof MyInterface));
}
}
class Parent {}
class Child extends Parent implements MyInterface {}
interface MyInterface {}
/*
输出:
obj1 instanceof Parent: true
obj1 instanceof Child: false
obj1 instanceof MyInterface: false
obj2 instanceof Parent: true
obj2 instanceof Child: true
obj2 instanceof MyInterface: true
*/
在使用 instanceof 运算符时,请记住 null 不是任何事物的实例。
位运算符
A=60,B=13,针对二进制数
图解 Java 位运算 - 云+社区 - 腾讯云 (tencent.com)
操作符 | 描述 | 例子 |
---|---|---|
& | 如果相对应位都是1,则结果为1,否则为0 | (A&B),得到12,即0000 1100 |
| | 如果相对应位都是 0,则结果为 0,否则为 1 (如果相对应位只要有一位是1,则结果为 1,否则为 0) | (A | B)得到61,即 0011 1101 |
^ | 异或,如果相对应位值相同,则结果为0,否则为1 | (A ^ B)得到49,即 0011 0001 |
〜 | 按位取反运算符翻转操作数的每一位,即0变成1,1变成0。 | (〜A)得到-61,即1100 0011 |
<< | 按位左移运算符。左操作数按位左移右操作数指定的位数。 | A << 2得到240,即 1111 0000 |
>> | 按位右移运算符。左操作数按位右移右操作数指定的位数。 移动得到的空位以符号位填充。 | A >> 2得到15即 1111 |
>>> | 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 | A>>>2得到15即0000 1111 |