包装类
基本类型包装类的概述:
Java有8种基本数据类型:整型 (byte、short、int、long)、浮点型 (float、double)、布尔型boolean、字符型char,相对应地,Java提供了8种包装类Byte、Short、Integer、Long、Float、Double、Boolean、Character。
为什么会有基本类型包装类
为了能够简便的使基本数据类型更好且方法便的和引用数据类型之间互相转化,将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据。
常用操作
常用的操作之一:用于基本数据类型与字符串之间的转换
示例:
public class Test4{
public static void main(String[] args) {
String s = "100";
Integer integer = Integer.valueOf(s);
}
}
注意:该字符串必须是能够转换成对应的类型的字符串,例如:“100”可以正常转化,“你好”是不能转换的。
装箱与拆箱
基本类型与对应的包装类对象之间,来回转换的过程称为”装箱“与”拆箱“:
装箱:从基本类型转换为对应的包装类对象。
拆箱:从包装类对象转换为对应的基本类型。
示例:
public class Test4{
public static void main(String[] args) {
int i = 100;
//装箱
Integer integer = new Integer(i);
//拆箱
i = integer.intValue();
}
}
为了简化这一步骤Java在1.5版本之后就添加了自动装箱和自动拆箱
示例:
public class Test4{
public static void main(String[] args) {
//自动装箱
Integer integer = 100;
//自动拆箱
int i = integer;
}
}
Int与Integer的区别?
int 是基本类型,直接存数值;而integer引用数据类型;Int的变量声明后的初始值为0;Integer的初始值为null,需要创建对象后,才能对变量数据进行处理;Integer类是int的包装类,实际开发中Integer的对象可以进行数据转换等操作。
判断下面程序片段输出的结果:
Integer num1 = 200; Integer num2 = 200; System.out.println("num1==num2: "+(num1==num2)); System.out.println("num1==num2: "+(num1.equals(num2))); Integer num3 = 100; Integer num4 = 100; System.out.println("num3==num4: "+(num3==num4));
结果:
分析:
首先要明确equal方法与==的区别:
1,“==” 比较的是两个对象的引用(内存地址)是否相同,也用来比较两个基本数据类型的变量值是否相等。
第一个创建了两个Integer对象,地址不相同,所以为false。
2,equals() 比较的是两个对象的值(内容)是否相同。
两个Integer对象的值相同,所以为true。
3,Integer声明的变量的值在[-128,127]范围地址指向相同,因为byte范围的数是从常量池中获取。
所以num3和num4的内存地址相同,答案为true。