• integer比较


    public class EqualsMethod

    {
        public static void main(String[] args)
        {
            Integer n1 = new Integer(47);
            Integer n2 = new Integer(47);
            System.out.print(n1 == n2);
            System.out.print(",");
            System.out.println(n1 != n2);
        }
    }

    首先 我们要知道 == 这个比较符号
    ==可用于基本类型和引用类型:当用于基本类型时候,是比较值是否相同;当用于引用类型的时候,是比较对象是否相同。
    "=="和"!="比较的是地址 指第一个new()c出来的地址
    所以因为两次new() 分出的内存也不同
    所以
    System.out.print(n1 == n2);返回 false

    !=就返回true

    还有例子

    Integer n33 = Integer.valueOf(47);
    Integer n44 = Integer.valueOf(47);
    System.out.println(n33 == n44);

    Integer n1 = new Integer(47);
    Integer n2 = new Integer(47);
    System.out.print(n1 == n2);
    System.out.print(",");
    System.out.println(n1 != n2);

    打印结果
    true
    true
    false,true

    这里有个误区所谓的缓存,是在使用valueOf的时候使用的,
    
    
    Integer n3 = Integer.valueOf(47)
    
    
    Integer n4 = Integer.valueOf(47);
    
    
    这里的n3==n4才是true。
    
    
    如果直接使用new一个对象,从构造函数来看:
    
    
        public Integer(int value) {
    
    
            this.value = value;
    
    
        }
    
    
    就是完全不同的两个对象,没有使用所谓的缓存。
     

    1.  -128<= x<=127的整数,将会直接缓存在IntegerCache中,那么当赋值在这个区间的时候,不会创建新的Integer对象,而是从缓存中获取已经创建好的Integer对象;当大于这个范围的时候,直接new Integer来创建Integer对象。

    2. new Integer(1) 和Integer a = 1不同,前者会创建对象,存储在堆中,而后者因为在-128到127的范围内,不会创建新的对象,而是从IntegerCache中获取的。
    3.int与Integer作比时,Integer会自动拆箱。
     
  • 相关阅读:
    [转][html5]网页横屏
    [转][EasyUI]扩展 DateBox
    [转][C#]枚举的遍历Enum
    [转][C#]单例模式之懒加载
    [C#][Quartz]添加监听器
    [C#][Quartz]帮助类
    [转]Win 10 的 Win 按键没反应
    转来的--轻松自动化---selenium-webdriver(python) (七)---定位iframe——转来的
    安装charles
    遇到的问题汇总
  • 原文地址:https://www.cnblogs.com/zhuyeshen/p/11017448.html
Copyright © 2020-2023  润新知