栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

第2篇——运算符

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第2篇——运算符

运算符

下表是java运算符的优先级表,按照从高到低排列。同一行中的运算符具有相同的优先级,除了赋值运算符之外的所有双目运算符都是从左到右求值,赋值运算符是从右向左求值。通常在使用中,复杂的运算符表达式都要求加上小括号来精确描述表达式的含义,这种做法使代码更易于阅读和维护。

运算符优先级
后缀expr++ expr–
一元++expr --expr +expr -expr ~ !
乘法的* / %
加性的+ -
转移<< >> >>>
关系< > <= >= instanceof
平等== !=
按位与&
按位异或^
按位或|
逻辑与&&
逻辑或||
三元? :
任务= += -= *= /= %= &= ^=

Java作为类C语言,上表中的绝大多数运算符在C/C++中也存在,并且用法也是一致的。作为一份写给C/C++程序员的Java基础教程,我们只介绍那些在C/C++没有的运算符及其作用。

instanceof

运算符将instanceof对象与指定类型进行比较。您可以使用它来测试对象是类的实例、子类的实例还是实现特定接口的类的实例。相当于python中的isinstance函数。下面是官方教程中的例子:

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 {}    // Child继承自Parent类,并实现了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
>>>

在讲">>>"运算符之前,我大概提一下,整型数值在计算机中是由补码表示的,浮点数则遵从IEEE754标准。如果你还不知道这些,那么你有兴趣,可以看看这些知识。好了,言归正传。在JavaSE和JavaEE中,移位运算符很少被使用,在JavaME中可能会被经常使用(实际上,就是嵌入式开发场景才会经常使用移位运算符)

由于符号位在高位,“有符号”左移运算符(<<)按位左移之后,后面的位补上0即可;“有符号”右移运算符(>>)按位右移之后,则是根据符号位的值补上0(符号位是0)或者1(符号位是1);而“无符号”右移位运算符(>>>),它使用了“零扩展”:无论正负,都在高位插入0。这一运算符是C/C++没有的。

下面是一点测试代码,你执行看看输出。

int a = -10;
System.out.println(Integer.toBinaryString(a));
a <<= 2;
System.out.println(Integer.toBinaryString(a));
a >>= 4;
System.out.println(Integer.toBinaryString(a));
a = -10;
a >>>=2;
System.out.println(Integer.toBinaryString(a));

参考资料:Java8官方教程

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/872549.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号