1、基本数据类型 ---- > 包装类,调用包装类的构造器
@Test
public void test1(){
int num = 10;
// System.out.println(num.toString());
Integer int1 = new Integer(num);
System.out.println(int1.toString());
Integer int2 = new Integer("123");
System.out.println(int2.toString());
Float f1 = new Float(12.3f);
Float f2 = new Float("12.3");
System.out.println(f1);
System.out.println(f2);
}
2、包装类 ---> 基本数据类型:调用包装类的XXXValue()
@Test
public void test2(){
Integer in1 = Integer.valueOf(12);
int i = in1.intValue();
System.out.println(i+1);
Float f1 = Float.valueOf(13.2f);
float f = f1.floatValue();
System.out.println(f + 1);
}
3、自动装箱与自动拆箱
@Test
public void test3(){
// int num1 = 20;
// // 基本数据类型 -- > 包装类的对象
// method(num1);
// 自动装箱
int num2 = 10;
Integer in1 = num2; // 自动装箱
boolean b1 =true;
Boolean b2 = b1; // 自动装箱
// 自动拆箱:包装类--->基本数据类型
System.out.println(in1.toString());
int num3 = in1; // 自动拆箱
}
4、基本数据类型、包装类---->String类型:调用String重载的valueOf(xxx xxx)
@Test
public void test4(){
int num1 = 10;
// 方式1:连接运算
String str1 = num1 + "";
// 方式2: 调用String的valueof(xxx xxx)
float f1 = 12.3f;
String s = String.valueOf(f1); // "12.3"
Double d1 = new Double(12.3);
String s1 = String.valueOf(d1);
System.out.println("s = " + s);
System.out.println("s1 = " + s1); // "12.3"
}
5、String类型 ---> 基本数据类型、包装类:调用包装类的parseXX()
@Test
public void test5(){
String str1 = "123";
int i = Integer.parseInt(str1);
System.out.println(i+1);
String str2 = "true";
boolean b = Boolean.parseBoolean(str2);
System.out.println(b);
}
常见面试题
1、下面代码输出的结果是否一样?各是什么?
// 三元运算符 要去前后执行的连个语句的格式相同 所以Integer 会提升为Double类型
Object o1 = true ? new Integer(1) : new Double(2.0);
System.out.println(o1); // 1.0
Object o2;
if (true)
o2 = new Integer(1);
else
o2 = new Double(2.0);
System.out.println(o2); // 1
2、下面的代码结果为什么
Integer i = new Integer(1);
Integer j = new Integer(1);
System.out.println(i == j); // false
Integer m = 1;
Integer n = 1;
System.out.println(m == n); // true
/*
Integer内部定义了IntegerCache结构,IntegerCache中定义了Integer[]
保存了从-128 - 127范围的整数。如果我们使用自动装箱的方式,给Integer
赋值范围再-123 - 127范围内时,可以直接使用数组中的元素,不用再去new了。
目的:提高效率
*/
Integer x = 128;
Integer y = 128;
System.out.println(x == y); // false