1.包装类
Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的。基本类型的数据不具备"对象"的特性(没有成员变量和成员方法可以调用),因此,java为每种数据类型分别设计了对应的类,即包装类。
包装类的变量的默认值可以是null,容错率更高。
所有包装类都是final类型,因此不能创建他们的子类。
包装类是不可变类,一个包装类的对象自创建后,他所包含的基本类型数据就不能被改变。
2.装箱和拆箱
装箱和拆箱的概念描述的其实就是Java中这八种基本数据类型和对应的包装类型之间的转换过程。我们把基本数据类型转换成对应的包装类型的过程叫做装箱。反之就是拆箱。在Java中的装箱和拆箱不是人为操作的,是程序在编译的时候编译器帮助我们完成这项任务的,因此说它是自动的。
装箱:将基本数据类型变为包装类对象。
拆箱:将包装类中包装的基本数据类型取出。
自动装箱
自动装箱是编译期底层调用了Integer.valueOf()这个方法。
Integer a=5 // Integer a=Integer.valueOf(5);
自动拆箱
跟自动装箱的方向相反,将Integer及Double这样的引用类型的对象重新简化为基本类型的数据。
int b=a;// 底层是 int b=a.intValue
3.基本数据类型和字符串相互转换
基本类型转换为字符串有三种方法:
-
使用包装类的 toString() 方法
-
使用String类的 valueOf() 方法
-
用一个空字符串加上基本类型,得到的就是基本类型数据对应的字符串
例如:
//将基本类型转换为字符串(其他基本类型同理)
int a = 10;
String s1 = Integer.toString(a); //方法1
String s2 = String.valueOf(a); //方法2
String s3 = a + ""; //方法3
将字符串转换成基本类型有两种方法:
-
调用包装类的 parseXxx 静态方法。
-
调用包装类的 valueOf() 方法转换为基本类型的包装类,会自动拆箱。
例如
//将字符串转换为基本类型
String s = "10";
int a = Integer.parseInt(s); //方法1
int b = Integer.valueof(s); //方法2
要确定你的字符串可以转换为int类型的,比如说:
String s = “10”;可以转换,但是 String s = “abc”;则转换时会报错。