JAVA的包装类?为什么要把基本数据类型包装成类?
2025-06-01 04:02:40
java为每种基本数据类型(primitive types)提供了对应的包装类(Wrapper Classes),它们属于引用类型(对象),位于java.lang包中。
byte - Byte
short - Short
int - Integer
long - Long
float - Float
double - Double
char - Character
boolean - Boolean
为什么需要包装类?
让基本数据类型也能面向对象:Java是面向对象的语言,但基本数据类型(如int、char等)不是对象。而某些场景(如集合类List、Map等)只能存储对象,不能直接存储基本类型。
提供更多的操作方法 :基本数据类型本身没有方法,而包装类提供了许多实用的方法,如:
Integer.parseInt("123")(字符串转int)
Double.compare(1.5, 2.0)(比较两个double值)
Character.isDigit('9')(判断是否是数字)
支持null值:基本数据类型不能为null,但包装类可以表示“无值”的情况。
泛型(Generics)支持:Java泛型(如List、Map
自动装箱(Autoboxing)和拆箱(Unboxing)
包装类的注意事项
== 比较的是对象引用,不是值:使用equals()比较值,而不是==(除非在缓存范围内,如Integer -128~127)。
可能引发NullPointerException:包装类可以为null,但拆箱时可能抛出异常
性能开销:包装类是对象,占用更多内存,频繁操作时可能影响性能(如大量数学计算优先用基本类型)。