Integer与int的区别

本文探讨了Java中的Integer类型在web表单、Hibernate中的OID用途以及提供的操作方法。重点介绍了它如何区分未赋值和0,以及在Hibernate中临时对象判断中的作用。

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

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

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

JavaInteger int 存在多方面的区别: - **类型层面**:Integerint 的包装类,属于引用类型;而 intJava 的一种基本数据类型[^2][^4]。 - **实例化存储方式**:Integer 变量必须实例化后才能使用,它实际上是对象的引用,当使用 `new` 创建一个 Integer 时,会生成一个指针指向此对象;int 变量不需要实例化,它直接存储数据值[^2][^4]。 - **默认值**:Integer 的默认值是 null,int 的默认值是 0[^2][^4]。 - **`==` 比较**: - 两个通过 `new` 生成的 Integer 变量永远不相等,因为 `new` 生成的是两个不同的对象,其内存地址不同。示例代码如下: ```java Integer i = new Integer(100); Integer j = new Integer(100); System.out.println(i == j); // 输出 false ``` - Integer 变量 int 变量比较时,只要两个变量的值相等,则结果为 true。因为包装类 Integer 基本数据类型 int 比较时,Java 会自动拆包装为 int,然后进行比较,实际上就变为两个 int 变量的比较。示例代码如下: ```java Integer i = new Integer(100); int j = 100; System.out.println(i == j); // 输出 true ``` - 非 `new` 生成的 Integer 变量 `new Integer()` 生成的变量比较时,结果为 false。因为非 `new` 生成的 Integer 变量指向的是 Java 常量池中的对象,而 `new Integer()` 生成的变量指向堆中新建的对象,两者在内存中的地址不同。示例代码如下: ```java Integer i = new Integer(100); Integer j = 100; System.out.println(i == j); // 输出 false ``` - 对于两个非 `new` 生成的 Integer 对象,进行比较时,如果两个变量的值在区间 -128 到 127 之间,则比较结果为 true;如果两个变量的值不在此区间,则比较结果为 false。示例代码如下: ```java Integer i = 100; Integer j = 100; System.out.println(i == j); // 输出 true Integer m = 128; Integer n = 128; System.out.println(m == n); // 输出 false ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值