课程咨询 :186 8716 1620      qq:2066486918

昆明Java培训 > 达内新闻 > 谨慎包装类型的大小比较
  • 谨慎包装类型的大小比较

    发布:昆明Java培训      来源:达内新闻      时间:2016-09-30

  • 昆明Java培训的老师知道,基本类型是可以比较大小的,其所对应的包装类型都实现了Comparable接口,也说明了此问题,那我们来比较一下两个包装类型的大小,代码如下:

    1 public class Client27 {

    2    public static void main(String[] args) {

    3        Integer i = new Integer(100);

    4        Integer j = new Integer(100);

    5        compare(i, j);

    6    }

    7

    8    public static void compare(Integer i, Integer j) {

    9        System.out.println(i == j);

    10        System.out.println(i > j);

    11        System.out.println(i < j);

    12

    13    }

    14 }

    代码很简单,产生了两个Integer对象,然后比较两个的大小关系,既然包装类型和基本类型是可以自由转换的,那上面的代码是不是就可以打印出两个相等的值呢?让事实说话,运行结果如下:

    false false false

    竟然是3个false,也就是说两个值之间不相等,也没大小关系,这个也太奇怪了吧。不奇怪,我们来一一解释:

    i==j:在java中"=="是用来判断两个操作数是否有相等关系的,如果是基本类型则判断值是否相等,如果是对象则判断是否是一个对象的两个引用,也就是地址是否相等,这里很明显是两个对象,两个地址不可能相等。

    i>j和i<j:在Java中,">"和"<"用来判断两个数字类型的大小关系,注意只能是数字类型的判断,对于Integer包装类型,是根据其intValue()方法的返回值(也就是其相应的基本类型)进行比较的(其它包装类型是根据相应的value值比 较的,如doubleValue,floatValue等),那很显然,两者不肯能有大小关系的。

    问题清楚了,修改总是比较容易的,直接使用Integer的实例compareTo方法即可,但是这类问题的产生更应该说是习惯问题,只要是两个对象之间的比较就应该采用相应的方法,而不是通过Java的默认机制来处理,除非你确定对此非常 了解。

    了解详情请登陆昆明达内Java培训官网(km.Java.tedu.cn)!

    推荐文章

上一篇:提防包装类型的null值

下一篇:优先使用整型池

最新开班日期  |  更多

Java--零基础全日制班

Java--零基础全日制班

开班日期:11/30

Java--零基础业余班

Java--零基础业余班

开班日期:11/30

Java--周末提升班

Java--周末提升班

开班日期:11/30

Java--零基础周末班

Java--零基础周末班

开班日期:11/30

  • 网址:http://km .java.tedu.cn      地址:昆明市官渡区春城路62号证券大厦附楼6楼
  • 课程培训电话:186 8716 1620      qq:2066486918    全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56