zoukankan      html  css  js  c++  java
  • 一、基础篇--1.1Java基础-int 和 Integer 有什么区别,Integer的值缓存范围

    int和Integer的区别

    1. int是基本数据类型,Integer是int的包装类。
    2. Integer必须实例化后才能使用,int变量不需要。
    3. Integer实际是对象的引用,生成一个新对象实际上是生成一个指针指向此对象;而int则是直接存储数据值。
    4. Integer默认值是null,int默认值是0;

    Integer的缓存范围是-128到127。

    关于Int和Integer比较的一些延伸:

    例子:

     Integer a= new Integer(100);

     Integer b = new Integer(100);

     int c = 100;

     Integer d = 100;

     Integer e = 100;

     Integer f = 128;

     Integer g =128;

     ①、System,out.print(a==b);//false

     ②、System,out.print(a==c);//true

     ③、System,out.print(a==d);//false

        ④、System,out.print(d==e);//true

     ⑤、System,out.print(f==g);//false

    解析:
      ①:Integer变量是对一个Integer对象的引用。通过new生成的Integer变量地址永远不相等。因此false;

      ②:Integer和int作比较,Integer会自动做拆箱操作转化为int类型,因此是两个数值的值比较,所以相等,因此true;

      ③:new生成的对象在堆中,非new生成的对象在java的常量池中,因此非new生成的Inte变量和new Integer()生成的变量比较时总为false;

      ④&&⑤:对呀两个非new生成的Integer对象比较时,如果两个变量值在区间-128到127之间,比较结果为true,不在这个范围的则为false;

    java在编译Integer d = 100;时,会编译成Integer d = Integer.valueOf(100);,看java Api源码可以知道:

        public static Integer valueOf(int i) {
            assert IntegerCache.high >= 127;
            if (i >= IntegerCache.low && i <= IntegerCache.high)
                return IntegerCache.cache[i + (-IntegerCache.low)];
            return new Integer(i);
        }

    java对于-128到127之间的数进行缓存,如果再这个范围内不在new生成; 

  • 相关阅读:
    内存溢出常见原因分析
    内存溢出,与内存泄露
    ping不通linux服务器排查
    内存,缓存,cpu,硬盘关系
    cpu 基础知识
    sql查询以及常见问题理解解析
    月入一万,活在北京 (zz)
    超越信息和通讯 迎接新一轮数字化变革 (转载)
    The specified DSN contains an architecture mismatch between the Driver and Application (zz.IS2120@B)
    Excel .xls文件导入、导出 的例子
  • 原文地址:https://www.cnblogs.com/foreverYoungCoder/p/9921031.html
Copyright © 2011-2022 走看看