Java - Language Basics - Operators

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html

Language Basics

Operators

既然您已经学习了如何声明和初始化变量,那么您可能想知道如何使用它们。学习Java编程语言的运算符是一个很好的开始。操作符是对一个、两个或三个操作数执行特定操作,然后返回结果的特殊符号。

在我们研究Java编程语言的操作符时,提前知道哪些操作符的优先级最高可能会对您有所帮助。下表中的操作符是按照优先顺序列出的。操作符出现的位置越靠近表的顶部,其优先级越高。具有较高优先级的操作符优先于具有相对较低优先级的操作符。同一行的运算符具有相同的优先级。当具有相同优先级的操作符出现在同一个表达式中时,必须有一个规则来控制哪一个先求值。除赋值操作符外,所有二元操作符都是从左到右求值;赋值操作符从右到左计算。

image

在通用编程中,某些操作符往往比其他操作符出现得更频繁;例如,赋值操作符"="比无符号右移操作符">>>"要常见得多。考虑到这一点,下面的讨论首先关注的是您最可能经常使用的操作符,最后关注那些不太常见的操作符。每个讨论都附带了可以编译和运行的示例代码。研究它的输出将有助于巩固你刚刚学到的东西。

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。

Summary of Operators

Summary of Operators

posted @ 2022-05-12 13:36  Pril  阅读(40)  评论(0)    收藏  举报