第5课_基本类型与包装类
热度🔥:69 免费课程
授课语音
Java 中的基本数据类型与包装类
Java 是一种强类型语言,提供了 8 种基本数据类型(Primitive Types)和与之对应的包装类(Wrapper Classes)。掌握基本数据类型及其包装类是学习 Java 的基础,也是进行类型转换、集合操作等的重要前提。
1. 基本数据类型
Java 提供了 8 种基本数据类型,分为四类:整型、浮点型、字符型和布尔型。
类型 | 关键字 | 位数 | 取值范围 | 默认值 |
---|---|---|---|---|
整型 | byte |
8 位 | -128 ~ 127 | 0 |
short |
16 位 | -32,768 ~ 32,767 | 0 | |
int |
32 位 | -2^31 ~ 2^31 - 1 | 0 | |
long |
64 位 | -2^63 ~ 2^63 - 1 | 0L | |
浮点型 | float |
32 位 | 1.4E-45 ~ 3.4028235E38 | 0.0f |
double |
64 位 | 4.9E-324 ~ 1.7976931348623157E308 | 0.0d | |
字符型 | char |
16 位 | 单个 Unicode 字符(0 ~ 65,535) | '\u0000' |
布尔型 | boolean |
1 位 | true 或 false |
false |
基本数据类型代码案例
package basics;
public class PrimitiveTypesExample {
public static void main(String[] args) {
// 整型
byte b = 127; // byte 类型,范围:-128 到 127
short s = 32000; // short 类型,范围:-32,768 到 32,767
int i = 100000; // int 类型,范围:-2^31 到 2^31-1
long l = 10000000000L; // long 类型,需要以 L 结尾
// 浮点型
float f = 3.14f; // float 类型,需要以 f 结尾
double d = 3.141592653589793; // double 类型,精度更高
// 字符型
char c = 'A'; // char 类型,存储单个字符
char unicodeChar = '\u4F60'; // Unicode 字符:'你'
// 布尔型
boolean flag = true; // boolean 类型,值为 true 或 false
// 输出
System.out.println("byte: " + b);
System.out.println("short: " + s);
System.out.println("int: " + i);
System.out.println("long: " + l);
System.out.println("float: " + f);
System.out.println("double: " + d);
System.out.println("char: " + c);
System.out.println("Unicode char: " + unicodeChar);
System.out.println("boolean: " + flag);
}
}
代码注释:
- 每种基本数据类型都有固定的取值范围,超出范围会导致编译错误或数据溢出。
- 字符型支持 Unicode 编码,适合国际化应用。
2. 包装类
基本数据类型的包装类提供了对象版本,支持更多的操作(如方法调用)和与泛型类的兼容性。
基本类型 | 包装类 | 默认值 | 自动装箱与拆箱 |
---|---|---|---|
byte |
Byte |
null |
从 Java 5 开始支持 |
short |
Short |
null |
从 Java 5 开始支持 |
int |
Integer |
null |
从 Java 5 开始支持 |
long |
Long |
null |
从 Java 5 开始支持 |
float |
Float |
null |
从 Java 5 开始支持 |
double |
Double |
null |
从 Java 5 开始支持 |
char |
Character |
null |
从 Java 5 开始支持 |
boolean |
Boolean |
null |
从 Java 5 开始支持 |
包装类的特点
- 每个包装类都是
java.lang
包的一部分。 - 提供静态方法
valueOf
和parseXXX
,用于类型转换。 - 支持自动装箱(Auto-boxing)和自动拆箱(Unboxing)。
包装类代码案例
package basics;
public class WrapperClassesExample {
public static void main(String[] args) {
// 自动装箱
Integer intObj = 100; // int 自动转换为 Integer
Double doubleObj = 3.14; // double 自动转换为 Double
// 自动拆箱
int intVal = intObj; // Integer 自动转换为 int
double doubleVal = doubleObj; // Double 自动转换为 double
// 手动转换
Integer manualIntObj = Integer.valueOf(200); // 将 int 转换为 Integer
int manualInt = manualIntObj.intValue(); // 将 Integer 转换为 int
// 字符串与数值转换
String str = "123";
int parsedInt = Integer.parseInt(str); // 将字符串转换为 int
String intToStr = Integer.toString(456); // 将 int 转换为字符串
// 输出
System.out.println("自动装箱: " + intObj);
System.out.println("自动拆箱: " + intVal);
System.out.println("手动装箱: " + manualIntObj);
System.out.println("字符串转换为整数: " + parsedInt);
System.out.println("整数转换为字符串: " + intToStr);
}
}
代码注释:
- 自动装箱和拆箱极大地简化了基本数据类型与包装类之间的转换。
Integer.parseInt
和Integer.valueOf
的区别:parseInt
返回基本类型,valueOf
返回包装类对象。
总结
基本数据类型与包装类的对比
特点 | 基本数据类型 | 包装类 |
---|---|---|
存储方式 | 栈内存 | 堆内存 |
操作方式 | 高效,直接操作 | 灵活,支持更多功能 |
应用场景 | 高性能计算、简单变量存储 | 泛型类、集合框架等复杂操作 |
通过深入理解基本数据类型和包装类,可以为性能优化和代码灵活性找到平衡点。