对于包装类,对于前端来说是一个比较陌生的概念。没关系,在学习包装类前,我们先复习一下java中的数据类型。
数据类型
java中,数据类型主要分为基本数据类型和引用数据类型
基本数据类型 | 引用数据类型 | ||
---|---|---|---|
整形(整数) | byte、short、int、long | String | 表示字符串 |
浮点型数据类型(小数) | float、double | Array | 表示数组 |
字符型数据类型 | char | Class | 表示类类型 |
布尔型数据类型 | boolean | Interface、Enum | 表示接口类型及表示枚举类 |
java中,引用数据类型都继承自Object类,所有其他的类都直接或间接地继承自Object类。
这意味着,引用数据类型都可以使用Object类上的方法:
public class Bz {
public static void main(String[] args) {
String name = "shixaioshi";
System.out.println(name.toString());
}
}
如上述代码,String类型的数据可以使用Object类上的toString()方法。
基本数据类型并不是一个类, 没有属性或对象,导致其功能非常简单和单薄。使用包装类能完美的解决这个问题。
包装类
什么是包装类
Java中的包装类是一种特殊的类,用于将基本数据类型封装为对象。每个基本数据类型都有一个对应的包装类。
包装类使得基本数据类型可以像对象一样使用,提供了更多的方法和功能。
Java中的包装类包括:
- Integer(对应int)
- Double(对应double)
- Float(对应float)
- Long(对应long)
- Short(对应short)
- Byte(对应byte)
- Character(对应char)
- Boolean(对应boolean)
我们来看一个简单demo
int num = 10;
Integer numObj = Integer.valueOf(num);
- Integer.valueOf() 方法是 Java 中 Integer 包装类的一个静态方法,用于将基本数据类型 int 转换为 Integer 类型的对象。
- 在上述代码中,Integer.valueOf(num) 将 int 类型的 num 转换为 Integer 类型的对象 numObj。
自动装箱与拆箱
通过上述代码,我们可以知道将一个int类型的数据转换成integer类型需要使用Integer上的valueOf方法。这样的转换是比较麻烦的。
我们可以使用java中的自动装箱来简化这一操作。
Integer num = 100; // 自动装箱,将int类型的100转换为Integer对象
- 自动装箱是指将基本数据类型自动转换为对应的包装类对象。
相应的,自动拆箱的概念也显而易见
Integer numObj = Integer.valueOf(10);
int num = numObj; // 自动拆箱,将Integer对象转换为int类型
- 自动拆箱是指将包装类对象自动转换为对应的基本数据类型。
自动装箱和拆箱机制使得代码更加简洁和易于维护,避免了显式地进行基本数据类型和对象之间的转换操作。
包装类有哪些方法
现在,我们应该已经熟悉了包装类是什么以及它的作用了,那包装类有哪些方法呢?
注:以下内容我们了解即可,不用记
Integer包装类
- parseInt(String s, int radix):返回与调用该方法的数值字符串相应的整型(int)值。
- parseInt(String s):与上面的方法类似,但是指定radix为10。
- valueOf(int i):返回一个新的Integer对象,其值为指定的int值。
- valueOf(String s):返回一个新的Integer对象,其值由字符串s表示的整数值决定。
- getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin):将Integer对象的字符序列的一部分复制到给定的字符数组中。
- compare(Integer anotherInteger):比较两个Integer对象。
- isDigit(char ch):判断指定的字符是否是数字字符。
- isLetter(char ch):判断指定的字符是否是字母字符。
isWhitespace(char ch):判断指定的字符是否是空格字符。
Double包装类
doubleValue(): 返回Double对象的双精度数值。
- intValue(): 返回Double对象的整数部分。
- longValue(): 返回Double对象的长整数值。
- floatValue(): 返回Double对象的单精度浮点数。
- byteValue(): 返回Double对象的字节表示。
Float包装类
- intValue(): 返回Float对象的整数部分。
- longValue(): 返回Float对象的长整数值。
- doubleValue(): 返回Float对象的双精度数值。
- shortValue(): 返回Float对象的短整数值。
- byteValue(): 返回Float对象的字节表示。
- compareTo(Float anotherFloat): 在数值上比较两个Float对象。如果两个对象的值相等则返回0,如果调用对象小于另一个对象则返回负数,如果调用对象大于另一个对象则返回正数。
- equals(Object obj): 判断两个Float对象是否相等。
- valueOf(float value): 返回一个新的Float对象,它表示基本的float参数。
- valueOf(String s): 返回一个新的Float对象,它表示String参数所指示的float值。
parseFloat(String s): 将一个String类型的变量作为参数解析为Float对象。
Long包装类
longValue(): 返回Long对象的long数值。
- intValue(): 返回Long对象的整数部分。
- shortValue(): 返回Long对象的短整数值。
- byteValue(): 返回Long对象的字节表示。
- doubleValue(): 返回Long对象的双精度数值。
- floatValue(): 返回Long对象的单精度浮点数。
- equals(Object obj): 比较两个Long对象是否相等。
- hashCode(): 返回Long对象的哈希码值。
- toString(): 返回Long对象的字符串表示。
- valueOf(String s): 将一个String类型的变量作为参数转换为一个Long对象。
其余包装类
其余包装类的方法大同小异,就不一一列举了。等我们真正用到的时候在一点点学习。