java中有八种基本数据类型对应的包装类型:
基本数据类型 包装类型
byte :java.lang.Byte
short:java.lang.Short
int:java.lang.Integer
long:java.lang.Long
float:java.lang.Float
double:java.lang.Boolean
boolean:java.lang.Boolean
char:java.lang.Character
思考:java中提供的八种基本数据类型不够用吗?为什么java中还需要提供对应的包装类那
举个栗子:
public class Test{
public static void main(String[] args) {
// 1、int -->Integer
Integer i1 = Integer.valueOf(10);
// 2、Integer-->int
int i2 = i1.intValue();
// 3、String -->Integer
Integer i3 = Integer.valueOf("10");
// 4、Integer -->String
String i4 = i3.toString();
// 5、String -->int
int i5 = Integer.parseInt("123");
// 6、int -->String
String s2 = 10 + "";
}
}
public class Test{
// 需求:规定m1方法可以接受java中任何一种数据类型
// m1方法如果想接收byte类型的数据,可以将byte类型先包装成java.lang.Byte,再传递参数
public static void main(String[] args) {
byte b = 10;
// 引用类型
Byte b1 = new Byte(b);
m1(b);
}
public static void m1(Object o){
System.out.println(o); //10 Byteyi已经将object。toString方法重写
}
}
深入自动装箱和自动拆箱:
- 自动装箱和自动拆箱是程序编译阶段的一个概念和程序运行无关
2、自动装箱和自动拆箱主要的目的是方便程序的编码
举个栗子:
public class Test{
public static void main(String[] args) {
Integer i1 = new Integer(10);
Integer i2 = new Integer(10);
// 这里不hi自动拆箱
System.out.println(i1 == i2); //false
// 比较两个Integer类型的数据是否相等,不能用“==”
// Integer已经重写了Object中的equals方法,比较的是内容
// Qbject中的equals()比较的是内存地址
System.out.println(i1.equals(i2)); //true
// 注意一下程序
// 如果数据是在(-128——127)之间,java中引入了一个“整性常量池”
Integer i5 = 127;
Integer i6 = 127;
System.out.println(i5 == i6); // true
Integer i7 = 128;
Integer i8 = 128;
System.out.println(i7 == i8); // false
Integer i9 = -129;
Integer i10 = -129;
System.out.println(i9 == i10); // false
}
}
网友评论