旗下导航:搜·么
当前位置:网站首页 > JAVA教程 > 正文

java integer和int的区分有哪些【JAVA教程】,java,integer,int,区别

作者:搜教程发布时间:2019-12-27分类:JAVA教程浏览:69评论:0


导读:基本:1、int是java的一种基本数据类型,而integer是int的一个封装类。2、Integer变量必需实例化以后才运用,而int变量不需要...

基本:

1、int 是 java 的一种基本数据类型,而 integer 是int 的一个封装类。

2、Integer 变量必需实例化以后才运用,而 int 变量不需要。

3、Integer 现实是对象的援用,当 new 一个 integer 对象时,现实上是生成一个指针指向该对象;而 int 是直接存储数据值。

4、Integer 的默认值是 null ,而 int 的默认值是 0。

延长:

1、由于 integer 变量现实上是对 integer 对象的援用,所以两个经由过程new 的integer 变量永久不相称(由于 new 生成的是两个对象,其内存地址不一样)。

Integer i = new Integer(100);
Integer j = new Integer(100);
System.out.print(i == j);//false

2、当一个 integer 变量和一个 int 变量比较时,只需两个变量的值相称,那末效果就是true,由于 integer 实质是 int 的一个封装类,当两数比较时,java会自动将 integer拆包,所以实质上就是两个int 变量的比较。

Integer i = new Integer(100);
int j = 100;
System.out.print(i == j);//true

3、当一个 new 建立的 Integer 变量和一个非 new 建立的 Integer 变量比较时,效果为false。由于非 new 建立的变量存在 java 常量池中,而 new 建立的变量指向堆中新建的对象,二者的内存地址差别。

Integer i = new Integer(100);
Integer j = 100;
System.out.print(i == j);//false

4、当两个非 new 的 Integer 变量比较时,假如两个变量的值在-128到127之间,那末效果就是 true,否则是 false。

关于这个新鲜的效果,java 的诠释是如许的:

Integer i = new Integer(100);//在编译时会变成Integer i = Integer.ValueOf(100)

而 java API 中对 Integer.valueOf()的定义以下:

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);
}

即,关于 -128~127 的数,java会举行缓存,而下次再对一个 Integer 变量赋值时,假如在 -128~127 而且已被缓存,那末就会直接从缓存中挪用。

ki4网,有大批免费的JAVA入门教程,迎接人人进修!

以上就是java integer和int的区分有哪些的细致内容,更多请关注ki4网别的相干文章!

标签:javaintegerint区别


欢迎 发表评论: