Java包装类型的大小比较需谨慎

原创 2016年05月31日 06:36:09
基本类型是可以比较大小的,其所对应的包装类型都实现了Comparable 接口也说明了此问题,那我们来比较一下两个包装类型的大小,代码如下:
public class Client {
    public static void main(String[] args) {
        Integer i = new Integer(100);
        Integer j = new Integer(100);
        compare(i,j);
    }
    // 比较两个包装对象大小
    public static void compare(Integer i , Integer j) {
        System.out.println(i == j);
        System.out.println(i > j);
        System.out.println(i < j);
    }
}
代码很简单,产生了两个Integer 对象,然后比较两者的大小关系,既然基本类型和包装类型是可以自由转换的,那上面的代码是不是就可打印出两个相等的值呢?让事实说话,运行结果如下:
false
false
false

竟然是3 个false,也就是说两个值之间不等,也没大小关系,这也太奇怪了吧。不奇怪,我们来一一解释。
  • i == j
    在Java 中“==”是用来判断两个操作数是否有相等关系的,如果是基本类型则判断值是否相等,如果是对象则判断是否是一个对象的两个引用,也就是地址是否相等,这里很明显是两个对象,两个地址,不可能相等。
  • i > j 和 i < j
    在Java 中,“>”和“<”用来判断两个数字类型的大小关系,注意只能是数字型的判断,对于Integer 包装类型,是根据其intValue() 方法的返回值(也就是其相应的基本类型)进行比较的(其他包装类型是根据相应的value 值来比较的,如doubleValue、floatValue 等),那很显然,两者不可能有大小关系的。

问题清楚了,修改总是比较容易的,直接使用Integer 实例的compareTo 方法即可。但是这类问题的产生更应该说是习惯问题,只要是两个对象之间的比较就应该采用相应的方法,而不是通过Java 的默认机制来处理,除非你确定对此非常了解。
版权声明:本文为芝麻软件工作室原创文章,未经芝麻软件工作室允许不得转载。

相关文章推荐

Java_语法基础_谨慎包装类型的大小比较

基本类型是可以比较大小的,其所对应的包装类型都实现了Comparable接口也说明了此问题,那我们来比较一下两个包装类型的大小,代码如下:package deep; public class Clie...

提高你的Java代码质量吧:谨慎包装类型的比较

一、分析  基本类型可以比较大小,其所对应的包装类型都实现了Comparable接口此问题。   二、场景  代码如下:  public class Client{ publ...

java有风险 跳槽需谨慎!!!

在上海某个软件公司工作一年于2013年的3月底离职,简历已经投了三个月了到目前仍未找到工作。这期间投了几百封简历只有两家公司让其面试而且面试的还是和java开发无关的工作,所以也就没去。可能有人会说和...

java迭代输出是穿参需谨慎!!

今天面试题:输出部门信息到控制台,部门自关联,要求在控制台上能看的出来层级关系 , 要求递归输出;实体类大概描述为: 。。 class Dep{ private int id; priva...

[疯狂Java]面向对象:基本类型的包装器类型、自动装箱/拆箱、包装器类型大小/相等比较

1. 基本类型的包装器类型:     1) Java并不是严格的面向对象语言就是因为存在8中基本类型数据(int、char、double、boolean等),它们并不是类对象;     2) 提供这8...

深入理解Java原始数据类型和包装类关于==和equals的比较

深入理解Java原始数据类型和包装类关于==和equals的比较

Java中的Integer和int等包装类和基本数据类型简单比较

在初学JAVA时我们接触到的都是一些基本的数据类型,比如int , float,double等。但是对于高等语言JAVA等面向对象的语言来说,一切都是对象。如此看来这些基本数据类型显得就有些‘单薄’-...

Java包装类与基本类型进行比较的坑

Java包装类与基本类型进行比较的坑

创业有风险,招聘需谨慎

大概一年前,来了一个小伙,说要找一份.net做网站的工作,兼职也可以。然后简单的介绍了一下自己,自己以前是一个车床工人,后来腿受伤了,不适合在做体力劳动了,决心去学习计算机编程,进入了本地一家培训机构...

微信号开通检测软件选择需谨慎

很多企业由于市场的发展,必须进入微信营销的市场,自己有很多号码资源,老客户,有自己的数据可,时间经历的长,资源也就越多。需要转型微信难免需要加上这些老客户的微信进行有效的广告宣传或者感情沟通。但是大量...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)