Integer------包装类

本文探讨了Java中包装类如Integer与基本类型int的区别,包括缓存池的使用、性能对比、面向对象特性及在POJO声明中的应用,强调了包装类在处理null值和数据库查询结果时的优势。

包装类

1 在java中基本类型都有对应的包装类,比如int对应的就是Integer,自动装箱和拆箱可以自动的转换,比较小的数字使用的频率比较高,所以设计了缓存池,对于-127-+128的数据,只要不是new出来的,是可以达到复用的,来提高效率的,

2 使用效率上int要大于Integer,因为Integer是对象,某些地方设计自动的装箱和拆箱操作,局部变量优先,合理的控制变量的声明周期,局部变量在方法的内部是存储在栈的,所以高效

3 Integer是对象,int是基本数据类型,后者没有方法可以调用,但是前者有丰富的方法可以调用,是以面向对象的思维,做了一些扩展,在pojo声明的时候是建议包装类的,因为他可以表示null,进行数据接受的时候包装类也是适合,因为数据库查询数据可能不存在,用基本的数据类型进行接受有NPE的风险;

### Java 面向对象编程中的包装 #### 包装的概念 Java 中的包装(Wrapper Class)是用来将基本数据型封装成对象的一组。这些位于 `java.lang` 包中,允许开发者在需要时将基本数据型转换为对象以便于操作[^1]。 以下是常见的基本数据型及其对应的包装: | **基本数据型** | **包装** | |-------------------|------------------| | byte | Byte | | short | Short | | int | Integer | | long | Long | | float | Float | | double | Double | | char | Character | | boolean | Boolean | #### 包装的作用 包装的主要目的是为了能够将基本数据型作为对象来处理。这使得它们可以在集合框架(Collections Framework)和其他需要对象参数的地方使用。此外,包装还提供了一些有用的工具方法,方便数值的操作和转换[^2]。 #### 自动装箱与拆箱 自 Java 5 开始引入了自动装箱(Autoboxing)和自动拆箱(Unboxing)机制,简化了基本数据型与其对应包装之间的转换过程。 - **自动装箱** 是指编译器会隐式地将基本数据型转换为其对应的包装- **自动拆箱** 则是指编译器会隐式地将包装转换回其对应的基本数据型。 ##### 示例代码 ```java Integer num = 10; // 自动装箱 int value = num; // 自动拆箱 ``` #### 包装的实现原理 包装本质上是对基本数据型的封装。例如,`Integer` 内部维护了一个名为 `value` 的私有成员变量,用来存储实际的整数值。通过 getter 方法可以获取该值。 ##### 示例代码 ```java public final class Integer { private final int value; public Integer(int value) { this.value = value; } public int intValue() { return value; } } ``` 当调用 `new Integer(10)` 创建对象时,实际上是在内存中分配了一块空间并初始化了 `value` 成员变量。而自动装箱则是由 JVM 在后台完成这一过程,无需显式调用构造函数[^3]。 #### 常见用途 1. **集合框架支持**: 许多集合(如 ArrayList、HashSet 等)只接受对象作为元素,因此需要用包装代替基本数据型。 2. **线程安全需求**: 某些场景下可能需要对共享的数据进行同步控制,此时包装提供了更好的解决方案。 3. **方法重载区分**: 不同签名的方法可以通过接收不同型的包装来进行区分。 4. **默认值设置**: 对象可以赋值为 null,而基本数据型不具备此特性。 #### 性能考虑 尽管包装带来了便利性,在性能敏感的应用程序中应谨慎使用。因为每次装箱/拆箱都会涉及额外开销,并可能导致不必要的临时对象创建。对于循环体内的频繁运算尤其需要注意这一点[^4]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值