zoukankan      html  css  js  c++  java
  • 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会自动拆箱。
     
  • 相关阅读:
    别人直播带货,李彦宏却想直播带“知识”
    什么能毁掉程序员的一生?
    如何清爽的安排日常?
    优秀的程序员真的不写注释吗?
    淘宝内测Bug风波:惹谁别惹程序员
    如果员工都不快乐,还谈什么绩效增长
    前端有架构吗?
    [转]BDC’s and CTR’s
    SAP data migration: Change vendor account group
    [转]abap程序设计方法
  • 原文地址:https://www.cnblogs.com/zhuyeshen/p/11017448.html
Copyright © 2011-2022 走看看