Java - Language Basics - Operators
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html
Language Basics
Operators
既然您已经学习了如何声明和初始化变量,那么您可能想知道如何使用它们。学习Java编程语言的运算符是一个很好的开始。操作符是对一个、两个或三个操作数执行特定操作,然后返回结果的特殊符号。
在我们研究Java编程语言的操作符时,提前知道哪些操作符的优先级最高可能会对您有所帮助。下表中的操作符是按照优先顺序列出的。操作符出现的位置越靠近表的顶部,其优先级越高。具有较高优先级的操作符优先于具有相对较低优先级的操作符。同一行的运算符具有相同的优先级。当具有相同优先级的操作符出现在同一个表达式中时,必须有一个规则来控制哪一个先求值。除赋值操作符外,所有二元操作符都是从左到右求值;赋值操作符从右到左计算。

在通用编程中,某些操作符往往比其他操作符出现得更频繁;例如,赋值操作符"="比无符号右移操作符">>>"要常见得多。考虑到这一点,下面的讨论首先关注的是您最可能经常使用的操作符,最后关注那些不太常见的操作符。每个讨论都附带了可以编译和运行的示例代码。研究它的输出将有助于巩固你刚刚学到的东西。
Assignment(赋值), Arithmetic(算术), and Unary Operators(一元操作符)
The Simple Assignment Operator
赋值符号‘=’,可以用来赋值,也可以用来创建对象。
The Arithmetic Operators
算数符号包括 +,-,*,/,%
可以组合起来用
+操作符也可以用于连接两个字符串
The Unary Operators
一元运算符
包括+,-,++,--,!
使用示例:
class UnaryDemo {
public static void main(String[] args) {
int result = +1;
// result is now 1
System.out.println(result);
result--;
// result is now 0
System.out.println(result);
result++;
// result is now 1
System.out.println(result);
result = -result;
// result is now -1
System.out.println(result);
boolean success = false;
// false
System.out.println(success);
// true
System.out.println(!success);
}
}
自增/自减操作符可以应用于操作数之前(前缀)或之后(后缀)。result++和++result的结果都是result增加了1。
唯一的区别是前缀版本(++result)执行的时候用的是加1后的值,而后缀版本(result++)执行的时候用的是原始值。
如果您只是执行简单的递增/递减操作,那么选择哪个版本并不重要。但是,如果您在更大的表达式中使用该操作符,则您选择的操作符可能会产生显著的差异。
下面的PrePostDemo程序演示了前缀/后缀的一元自增运算符::
class PrePostDemo {
public static void main(String[] args){
int i = 3;
i++;
// prints 4
System.out.println(i);
++i;
// prints 5
System.out.println(i);
// prints 6
System.out.println(++i);
// prints 6
System.out.println(i++);
// prints 7
System.out.println(i);
}
}
Equality(相等), Relational(关系), and Conditional(条件) Operators
The Equality and Relational Operators
相等操作符和关系操作符确定一个操作数是大于、小于、等于还是不等于另一个操作数。
请记住,在测试两个值是否相等时,必须使用"==",而不是"="
== equal to
!= not equal to
> greater than
>= greater than or equal to
< less than
<= less than or equal to
The Conditional(条件) Operators
包括||,&&,还有 ?:
?:可以被认为是if-then-else语句的简写
在下面的例子中,该操作符应读为:“如果someeconcondition为true,将value1赋值给result。否则,将value2的值赋给result。”
result = someCondition ? value1 : value2;
使用?:运算符,而不是if-then-else语句,可以使你的代码更容易读懂
The Type Comparison Operator instanceof
instanceof 操作符将对象与指定类型进行比较。您可以使用它来测试一个对象是类的实例、子类的实例,还是实现特定接口的类的实例。
参考一下demo
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
Bitwise and Bit Shift Operators
Java编程语言还提供了对整数类型执行按位和按位移位操作的操作符。本节讨论的运算符不太常用。因此,我们只是简单描述一下;其目的只是让您意识到这些操作符的存在。
一元位补码运算符“~”对位模式进行反求;它可以应用于任何整型,使每一个“0”变成“1”,每一个“1”变成“0”。例如,一个字节包含8位;对位模式为“00000000”的值应用该运算符将使其模式变为“11111111”。
<< >> 带符号的左移和右移
正数,在高位补0
负数,在高位补1
<<< >>> 无符号的左移和右移 无论正数负数都在高位补0
示例:int i = -1;i >>>= 10;
The bitwise & operator performs a bitwise AND operation.
The bitwise ^ operator performs a bitwise exclusive OR operation.
两个二进制数值如果在同一位上相同,则结果中该位为0,否则为1,比如1011 & 0010 = 1001。
The bitwise | operator performs a bitwise inclusive OR operation.
两个二进制数值如果在同一位上至少有一个1,则结果中该位为1,否则为0,比如1011 & 0010 = 1011。

浙公网安备 33010602011771号