首页 > 编程知识 正文

string是基本数据类型吗,静态变量和实例变量区别

时间:2023-05-03 12:30:02 阅读:146768 作者:1373

int和Integer的区别

1、Integer是int的包类,int是java的基本数据类型

2、Integer变量必须实例化才能使用,但不需要int变量

3、Integer实际上是对对象的引用,new的Integer的情况下实际上生成指向该对象的指针; int直接存储数据值

4、Integer的默认值为空,int的默认值为0

扩展:

关于Integer和int的比较

1.new生成的两个Integer变量不总是相等,因为Integer变量实际上是对一个Integer对象的引用(因为new生成的是两个对象,内存地址不同)。 integerI=newinteger(100;

integerj=newinteger(100;

system.out.print(I==j ); //false

2、比较Integer变量和int变量时,如果两个变量的值各向同性,则结果为true。 (比较包装类Integer和基本数据类型int时,java会自动取消包装并比较int,因此实际上是两个int变量的比较。 ) ) ) )。

int j=100;

system.out.print(I==j );//真

3、将非new生成的Integer变量与new Integer ()生成的变量进行比较,结果为false。 内存中的地址不同(Integeri=new iiii ),因为(非new生成的integer变量指向java常量池中的对象,new Integer ) )生成的变量指向堆中新创建的对象

英特尔j=100;

system.out.print(I==j ); //false

4、对两个new以外生成的Integer对象进行比较时,如果两个变量的值在区间-128至127之间,则比较结果为true,如果两个变量的值不在该区间中,则比较结果为falseInteger i=100 英特尔j=100;

system.out.print(I==j ); //trueInteger i=128;

英特尔j=128;

system.out.print(I==j ); //false

关于第4条的理由:

如果正在编译Integer i=100,java将被翻译为integerI=integer.valueof(100 )。 另一方面,java API将Integer类型的valueOf定义如下: 公共统计数据转换器(Inti )。

assert IntegerCache.high=127;

if (I=integer cache.lowi=integer cache.high ) }

returnintegercache.cache [ I (-integer cache.low ) ];

}

返回新集成器(I;

}

java缓存-128到127之间的数字,如果Integer i=127,则缓存127;如果写为Integer j=127,则直接从缓存中提取,而不是新的

更多编程学习课程,关注PHP中文网!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。