欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

int 和 Integer

程序员文章站 2024-01-10 08:53:58
...

int 和 Integer

以最简单的代码来看

int a = 100, b =100;
System.out.println(a == b);		//true
Integer c = 100, d =100;
System.out.println(c == d);		//true
int e = 1000, f =1000;
System.out.println(e == f);		//true
Integer g = 1000, h =1000;
System.out.println(g == h);		//false

为什么会有上述结果?

首先,int是基本数据来类型之一,而Integer是int的包装类。

一个小知识点,“==” 它是用来比较是否相等的:

  • 如果“==”两边是基本数据类型,则会直接比较值;那int类型的100自然是等于100的,1000和1000自然也是相等的。
  • 如果“==”两边是对象类型,则会比较两个对象的地址,不同的对象一般情况下地址当然是不同的,g和h就是两个不同的Integer对象,地址自然不同,也就不成立。

那为什么c和d会相等呢?

这涉及到java中一个自动装箱的概念,将基本数据类型转为包装类型叫做装箱,反过来叫拆箱。在对包装类进行一些算数运算时,会执行自动装箱和拆箱,而这个自动的范围是有限制的,对于int来讲,范围是 -128~127之间,于是Integer对象的值为100的时候可以执行自动拆箱,结果自然是100等于100,而值为1000时,超出了范围,不再比较值而是比较地址,于是结果是false。

相关标签: Java小知识 java