您的位置 首页 java

JAVA中int 和 Integer 有什么区别,为什么要有包装类

JAVA 提供两种不同的类型:引用类型和原始类型(或内置类型)。int 是 java 的原始数 据类型,Integer 是 java 为 int 提供的封装类。Java 为每个原始类型提供了封装类。

原始类型 封装类,

char Character,

short Short,

int Integer,

long Long,

double Double

引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有 不同的特征和用法,它们包括:大小和速度问题。

大小:

对象引用实例变量的 缺省值 为 null,而原始类型实例变量的缺省值与它们的类型有关。我们可以通过[封装类]..MAX_VALUE(); 来获取最大范围的数值,但是封装类始终比原始类型多一个null;

int的默认值为 0,而 Integer的默认值为 null,即Integer可以区分出未赋值和值为 0 的区别,int 则无法表达出未赋值的情况,例如,要想表达出没有参加考试和考试成绩为 0 的区 别,则只能使用 Integer。在 JSP开发中,Integer的默认为 null,所以用 EL 表达式在文本 框中显示时,值为空白 字符串 ,而int默认的默认值为0,所以用EL表达式在 文本框 中显示时, 结果为 0,所以,int 不适合作为 web 层的表单数据的类型。

Hibernate 中,如果将属性 id 定义为 Integer 类型,那么 Hibernate 就可以根据其 值是否为 null 而判断一个对象是否是临时的,如果将 id 定义为了 int 类型,还需要在 hbm 映 射文件中设置其 unsaved-value 属性为 0。

另外,Integer 提供了多个与整数相关的操作方法,例如,将一个字符串转换成整数, Integer 中还定义了表示整数的最大值和最小值的常量。

第一,基本数据类型之间的相互转换不是都可以制动转换的,而你强制转换又会出问题,比如String类型的转换为int类型的,那么jdk为了方便用户就提供了相应的包装类。

例子:

public class Integer{

private int i;

public Integer(int a){

i =a;

}

public static int parseToInt(){

return i;

}

public static Integer valueOf(String str){

//封装一系列的逻辑最终将str转换成int类型的IntegerStr

return new Integer(IntegerStr);

}

}

上面是jdk关于Integer的一个例子 比如Integer intg = Integer.valueOf(str); int i = intg.parseToInt();

这样用户就很方便的完成了 String和int的转换 这样就方便了用户

第二,有时候一个函数需要传递一个Object的变量 而你想传递int类型的进去显然不行,怎么办呢,用到了包装类。

public void test(Object obj){

}

你想传递5进去就可以这样

test(new Integer(5));

综上所述,包装类有三个用法 一个实现基本类型之间的转换 二是便于函数传值 三就是在一些地方要用到Object的时候方便将基本数据类型装换

文章来源:智云一二三科技

文章标题:JAVA中int 和 Integer 有什么区别,为什么要有包装类

文章地址:https://www.zhihuclub.com/185275.shtml

关于作者: 智云科技

热门文章

网站地图