打赏

牛客网Java刷题知识点之自动拆装箱

 

 

   不多说,直接上干货!

 

https://www.nowcoder.com/ta/review-java/review?query=&asc=true&order=&page=5

 

 

 

 Java语言支持的8种基本数据类型是:
byte
short
int
long
float
double
boolean
char

 
 
  自动装箱是Java编译器在基本数据类型和对应的对象包装类型之间做的一个转化。比如:把int转化成Integer,double转化成Double,等等。反之就是自动拆箱。
  Java支持的数据类型包括两种:一种是基本数据类型,包含byte,char,short, boolean ,int , long, float,double;另一种是引用类型:如String等,其实是对象的引用,JVM中虚拟栈中存的是对象的地址,创建的对象实质在堆中,通过地址来找到堆中的对象的过程,即为引用类型。
  自动装箱就是Java编译器在基本数据类型和对应的对象包装类型间的转化,即int转化为Integer。
  自动拆箱是Integer调用其方法将其转化为int的过程。

 

 

 

  题目链接

https://www.nowcoder.com/profile/4002626/myFollowings/detail/3200810

 

 

1、Integer有三种创建方式:
  Integer i1 = 59;
  Integer i2 = Integer.valueOf(59);
  Integer i3 = new Integer(59);


2、如果一个Integer类型的数和int类型的数相比(==),那么,由于会自动拆箱,Integer会拆箱为int型,所以,只要数值相等,则这个Integer就和int型的数字相等,不管这个Integer是以何种方式创建的。



 

package Test;

public class IntegerTest {
    
    public static void main(String[] args) {
    Integer i1 = 59;
    Integer i2 = Integer.valueOf(59);
    Integer i3 = new Integer(59);
    int i4 = 59;
    
    //只要是和int类型的比较,不管Integer如何创建,只要满足数值相等,就为true,因为会自动拆箱
    System.out.println(i1==i4);//true
    System.out.println(i2==i4);//true
    System.out.println(i3==i4);//true
    
    //只要是new Integer,并且比较的不是int型,那么,一定不相等
    System.out.println(i2==i3);//false
    System.out.println(i1==i3); //false
    
    //如果涉及到Integer.valueOf这个方法,那么,只要记住,
    // 如果 Integer i1 = 59,这个值在-128到127范围内,则true
    // 否则,false
    System.out.println(i1==i2); //true
    Integer i7 = 129;
    Integer i8 = Integer.valueOf(129);
    System.out.println(i7==i8);//false
    
   }
    
}

 

posted @ 2017-08-22 21:55  大数据和AI躺过的坑  阅读(367)  评论(0编辑  收藏  举报