十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这篇文章将为大家详细讲解有关Java中”==”运算符的使用丰方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于网站设计制作、成都做网站、郊区网络推广、小程序制作、郊区网络营销、郊区企业策划、郊区品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联公司为所有大学生创业者提供郊区建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com
很多程序设计语言都使用”==”来判断两个数据是否相等,我们在编程中也经常使用这个运算符,以至于对它已经熟视无睹。
首先我们来看一段代码
这段代码当中,声明了8个基础类型的变量,这8个变量当中, boolean类型的变量flag是个“异类”,为什么这么说呢?因为其他7种数据类型之间都可以使用”==”做比较,无论比较的结果是true还是false,但至少能够顺利通过编译,不会出现语法错误。但boolean类型的变量只能与其类型相同的变量进行比较,否则就会出现语法错误
通过上面的代码我们可以看到,不能把boolean类型的数据与其他7种基础数据进行比较,否则会报错。我们把这种现象戏称为“孤独的布尔”。那么,为什么boolean类型的数据不能与其他7种基础数据进行比较呢?原因很简单,就是因为其他7种类型的数据,本质上都是“数字”,我们使用”==”对这7种数据进行比较,比较的就是“数字的值”是否相等。而boolean类型的数据只有true和false两种逻辑值,不能用来与“数字”进行比较。
两个对象之间如果用“==”进行比较,会不会报错呢?很多人可能会说,我用“==”比较过两个String对象,其他情况似乎并不清楚。那么我们就来说说两个对象之间用”==”进行比较的规则。首先必须清楚,两个对象之间如果使用”==”进行比较,比的到底是什么?按照Java官方的说法,使用”==” 是比较“两个对象内存地址的数值是否相等”。我们可能不太理解这句话的意思,如果翻译成大白话就是说:看一下这两个对象是不是“同一个”对象。那么,是不是任意两个对象都能用”==”进行比较运算呢?如果这两个对象的类型是相同的,就可以用”==”进行运行运算,反之,如果这两个对象的类型不相同,使用”==”进行比较就会报错。我们可以看下面的代码
代码中,a1和a2类型相同,可以用”==”进行比较,但a1和b1类型不同,用”==”进行比较就会报错。我们把对象之间的比较规则,可以用一个词来概括,那就是“物以类聚”。意思是类型相同才能进行比较。
两个对象用”==”进行比较,还有一种特殊情况,那就是两个对象的类型之间如果有继承关系,那么也是可以用”==”进行比较的。请看下面的代码
大家可以看到,对象f是Father类型的,而对象c是Child类型的。但是Child类是Father类的子类,它们之间有继承关系,所以对象f和c也是可以用”==”进行比较的。其实f和c从本质上讲,也都是Father类的,所以也符合”物以类聚”规则。
按照Java的语法,一个对象是不能直接用”==”和一个基础数据进行比较。但是,从JDK1.5开始,Java支持一种叫做”自动装箱拆箱”的机制,这个机制的引入,产生了一种特殊情况,那就是:基础数据类型可以和包装类对象直接进行比较。
在这里,首先说一下”包装类”是个什么东西。Java语言为了能够让基础数据在某些特殊场合下用对象的形式表示或处理基础数据类型,就为每种基础数据类型都定义了一个包装类。每个包装类的对象当中,就包含一个基础类型的数据。基础数据类型一共有8种,分别是:Btye、Short、Integer、Long、Double、Float、Character和Boolean,分别对应byte、short、int、long、double、float、char和boolean这8种基础数据类型。比如一个Integer类的对象当中,就包含了一个int类型的数据。
自动装箱拆箱机制,能够让我们直接在程序中,把包装类的对象和基础数据类型进行比较。请看下面的程序
通过这段程序,我们可以发现:
1、一个int类型的数据可以直接和Integer类型的对象用”==”进行比较(见标号为①的代码),因为自动拆箱装箱机制在起作用。
2、一个int类型的数据甚至可以直接和Double类型的对象直接用”==”进行比较(见标号为②的代码),因为有自动装箱拆箱机制做保证,并且它们本质上都是数字。只要是数字之间的比较都是合法的。
但是:
3、Boolen类型的对象还是不能和其他基础类型数据进行比较(见标号为③的代码),因为”布尔是孤独的”。
4、两个包装类对象进行比较,如果这两个对象类型不同,也不能直接比较(见标号为④的代码),因为这两个对象所属的类型并无继承关系。
上文描述的就是Java中”==”运算符的使用,具体使用情况还需要大家自己动手实验使用过才能领会。如果想了解更多相关内容,欢迎关注创新互联行业资讯频道!