Java包装类的自动拆箱与装箱及内部类详解
需积分: 9 41 浏览量
更新于2024-08-18
收藏 2.14MB PPT 举报
"Java的包装类和内部类特性"
在Java编程中,包装类扮演着将基本数据类型与对象世界连接的重要角色。从JDK 5开始,Java引入了自动装箱(Autoboxing)和自动拆箱(Unboxing)功能,使得基本数据类型和其对应的包装类之间的转换变得更加便捷。在提供的代码示例中,展示了这个特性:
```java
Integer i1 = 1;
Integer i2 = 1;
System.out.println(i1 == i2);
Integer i3 = 128;
Integer i4 = 128;
System.out.println(i3 == i4);
```
在这段代码中,`i1` 和 `i2` 都被初始化为整数1,由于自动装箱,它们实际上是两个Integer对象。由于对象的比较是基于引用的,两个独立的对象即使值相同,引用也是不同的,因此 `i1 == i2` 输出 `false`。而 `i3` 和 `i4` 同样都是128,但由于Integer对象在-128到127之间会使用缓存,相同的值会返回相同的对象引用,所以 `i3 == i4` 输出 `true`。
接下来,我们讨论Java中的内部类。内部类是一种特殊的类,它可以定义在另一个类的内部,这使得内部类可以访问外部类的所有成员,包括私有成员。内部类主要有四种类型:
1. 成员内部类(非静态内部类):作为外部类的成员存在,需要依赖外部类的实例来创建。创建时,需要先创建外部类实例,再创建内部类实例。例如:
```java
OuterClass outer = new OuterClass();
OuterClass.InnerClass inner = outer.new InnerClass();
```
2. 静态内部类:使用`static`关键字修饰,不依赖外部类的实例,可以直接创建。例如:
```java
OuterClass.StaticInnerClass inner = new OuterClass.StaticInnerClass();
```
3. 局部内部类:定义在方法内部,只在该方法的作用域内有效。例如:
```java
public void someMethod() {
class LocalInnerClass {
// ...
}
LocalInnerClass localInstance = new LocalInnerClass();
}
```
4. 匿名内部类:没有名字的内部类,通常用于简洁地实现单一功能。它可以直接继承一个类或实现一个接口。例如:
```java
Button button = new Button() {
@Override
public void onClick() {
// ...
}
};
```
内部类的一个主要优点是它们可以拥有独立的继承关系,即使外部类已经继承了其他类或实现了接口。此外,内部类可以访问外部类的私有成员,这使得封装和抽象更加灵活。局部内部类和匿名内部类则常用于实现特定场景下的简洁代码,如事件处理器等。
总结一下,Java的包装类提供了自动装箱和拆箱的便利,而内部类则增强了面向对象的设计能力,允许更复杂的封装和交互。理解并熟练运用这些特性,能帮助开发者写出更高效、更具可维护性的代码。
2021-09-21 上传
2018-12-21 上传
2018-05-28 上传
2021-06-12 上传
2011-12-15 上传
2021-04-17 上传
2021-05-20 上传
点击了解资源详情
点击了解资源详情
慕栗子
- 粉丝: 19
- 资源: 2万+
最新资源
- 前端协作项目:发布猜图游戏功能与待修复事项
- Spring框架REST服务开发实践指南
- ALU课设实现基础与高级运算功能
- 深入了解STK:C++音频信号处理综合工具套件
- 华中科技大学电信学院软件无线电实验资料汇总
- CGSN数据解析与集成验证工具集:Python和Shell脚本
- Java实现的远程视频会议系统开发教程
- Change-OEM: 用Java修改Windows OEM信息与Logo
- cmnd:文本到远程API的桥接平台开发
- 解决BIOS刷写错误28:PRR.exe的应用与效果
- 深度学习对抗攻击库:adversarial_robustness_toolbox 1.10.0
- Win7系统CP2102驱动下载与安装指南
- 深入理解Java中的函数式编程技巧
- GY-906 MLX90614ESF传感器模块温度采集应用资料
- Adversarial Robustness Toolbox 1.15.1 工具包安装教程
- GNU Radio的供应商中立SDR开发包:gr-sdr介绍