zoukankan      html  css  js  c++  java
  • 提高你的Java代码质量吧:谨慎包装类型的比较

    一、分析 

    基本类型可以比较大小,其所对应的包装类型都实现了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); 
    } 

    既然基本类型和包装类型是可以自由转换的,那上面的代码的输出结果是不是可以打印两个值相等呢?运行结果如下 

    false 

    false 

    false 


    竟然是3个false,我们来一一解释: 

    I == j:在Java中“==”是用来判断两个操作数是否相等关系的,如果基本类型是判断值是否相等,如果是对象则判断地址是否相等。这里很明显是两个对象,两个地址不相等。 

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


    三、建议 

    问题分析清楚了,只要是两个对象之间的比较,就应该采用相应的方法,而不是通过Java的默认机制">","<"等机制来处理。除非你确定对此非常了解

  • 相关阅读:
    Win10家庭版无法远程桌面连接的解决方法
    分分钟用上C#中的委托和事件之窗体篇
    分分钟用上C#中的委托和事件
    Fiddler工具使用介绍三
    Fiddler工具使用介绍二
    Fiddler工具使用介绍一
    Hexo主题开发
    IDEA 编译 Jmeter 4.0 ( 二次开发_1 )
    Pinpoint 安装部署
    接口测试总结
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3211936.html
Copyright © 2011-2022 走看看