• Java中基本数据和包装类的比较


    public class AutoBoxTest {
    
    	public static void main(String[] args) {
    		Integer a1 = 127;
    		Integer a2 = 120 + 7;
    		System.out.println(a1 == a2);
    		
    		Integer b1 = 128;
    		Integer b2 = 120 + 8;
    		System.out.println(b1 == b2);
    		
    		Integer s1 = 2002;
    		short s2 = 2002;
    		System.out.println(s1 == s2);
    	}
    }
    

      上面代码运行结果:

    • 结果1和2不一样的原因:

    java中常量进行自动包装时,调用的是Integer.valueOf()方法,在Integer中有一个静态缓存类IntegerCache,该类默认会缓存-128到127之间的值,调用valueOf方法时,如果值在该缓存区间范围内,之间从缓存获取对象,否则直接new一个新对象返回。

    备注:缓存最大值可以通过虚拟机参数-XX:AutoBoxCacheMax=<size>设置,最小值不能小于127

    • 结果3为什么是true?

    反编译代码,如下:

    当包装对象和常量进行比较时,包装对象会先转成常量,再比较

  • 相关阅读:
    source命令
    [电脑配置]屏幕扩展过,找不到界面
    [SAS]方便查询Tips
    [Excel]方便查询Tips
    [SAS]运用函数等的一些问题
    [SAS]错误整理
    [SAS]易错例子之数值型转字符型
    [R]Precedence
    [sas]Missing Value
    [SAS]
  • 原文地址:https://www.cnblogs.com/junge8618/p/9397415.html
Copyright © 2020-2023  润新知