zoukankan      html  css  js  c++  java
  • Integer和int的区别

    Java两种数据类型

    1):基本数据类型byte,char,short  int float long doubleboolean

    2):引用数据类型: 数组、类、接口。

    级别从低到高为:byte,char,short(这三个平级)-->int-->float-->long-->double

    自动类型转换:从低级别到高级别,系统自动转的;

    强制类型转换:什么情况下使用?把一个高级别的数赋给一个别该数的级别低的变量;

    【八种基本数据类型的包装类】

    byte ——Byte  char----Character short ——Short int ——Integer float-----Float  long-----Long  double----Double  boolean---Boolean

    Integer和int的区别:Integer [ˈɪntɪdʒə(r)]

    1.Integer是int的包装类int则是java的一种基本数据类型 
    Integer的初值为nullint的初值为0Integer 是类,默认值为null,int是基本数据类型,默认值为0

    Integer实际是对象的引用(new一个Integer时,实际上是生成一个指针指向此对象int则是直接 存储数据值 

    2. Integer与new Integer比:无论值是否相同,Integer与new Integer都不会相等,结果为false

      情况一:Integer范围在-128~127之间,指向专门存放它的常量池;new Integer引用指向堆。它们的内存地址不一样,所以无论值是否相同,比较结果都为false。

      情况二:Integer范围不在-128~127之间,编译时Integer.valueOf()返回的是new Integer();而new Integer引用指向堆。这样两者是两个不同的堆栈对象,无论堆上的值是否相同,引用地址不同,比较结果都为false。

      情况三:两个Integer范围都不在-128~127之间,则依然是两个new Integer对象,则比较结果为false。

    3 .两个 new出来的Integer相比:两个都是new出来的,无论堆上的值是否相同,引用地址不同,结果为false

    4.两个 new出来的Integer相比: 两个都是非new出来的Integer,如果数在-128~127之间,值相同则为true,否则为false

    原因:java在编译Integer时,会翻译成Integer i = Integer.valueOf(),而valueOf()会对-128~127之间的数进行缓存。

    5.int和Integer比无论Integer是new出来的 还是-128~127范围之外的,值相同则为true,否则为false

    原因:Integer与int比较时,Integer会自动拆箱为int

    Integer 的自动拆箱和装箱

    自动装箱 就是Integer.valueOf(int i);  

    自动拆箱  就是 i.intValue();

    自动装箱规范要求 byte<= 127、char<=127、-128<=short <=127、-128<=int <=127都被包装到固定的对象中(缓存)。

    自动拆箱: Integer 类表示的数据赋值给基本数据类型int,就执行了自动拆箱。

    通过基本数据类型的包装来的valueOf和parseXX来实现String转为XX

  • 相关阅读:
    hdu 2137
    hdu 2059
    hdu 2175
    hdu 1297
    hdu 1702
    hdu 1212
    hdu 1397
    [转]常见的碱性食品有哪些?
    [转]C#反射
    每个人都有自己的未来
  • 原文地址:https://www.cnblogs.com/2549372994jing/p/10531723.html
Copyright © 2011-2022 走看看