/*
面试题
* int和Integer的区别:
1 修饰变量
* (1)修饰全局变量
初始值不同(int 0 Integer null
(2)修饰局部变量
Integer可以通过new的方式赋值
2 功能
Integer是一个类类型,可以有属性和方法,可以调用属性和方法完成相应功能,int不可以
3 内存
Integer 缓存(常量池) 堆
int 结合情况 栈中的值 或者对象的堆中的值
== 比较 额外注意内存问题 int只比较内容 ,Integer比较地址
*
*
*
* */
public class IntegerDemo {
int a;
Integer a1;
@Test
/*
* 术语
* */
public void method_01(){
// 拆装箱 手动拆装箱 《-jdk1.5(jdk5.0)-》自动拆装箱
// jdk1.5前手动拆装箱
// 装箱 (int->Integer)
int i = 10;
Integer j = new Integer(i);//手动装箱操作 构造方法形式
Integer k = Integer.valueOf(i);// 手动装箱操作 静态方法形式
// 拆箱 (Integer ->int
int k2 = j.intValue();//手动拆箱操作
// jdk1.5后自动拆装箱
int i2 = 4;
Integer i3 = i2;// 装箱
i2 = i3;// 拆箱
}
@Test
/*
* 方法 (比较 ,类型转换)
* */
public void method_02(){
Integer i = 5;
Integer i2 = new Integer(5);
Integer num1 = 5;
Integer num2 = 6;
if(num1<num2){
System.out.println("<");//输出
}
// 比较
if(num1.compareTo(num2) == 0){
System.out.println("num1=num2");
}else if(num1.compareTo(num2) > 0){
System.out.println("num1>num2");
}else{
System.out.println("num1<num2");
}
// String ->int(Integer) [字符串和基本类型间]要转什么类型就写什么类型的类类型.valueOf()
// int ->String
int num3 = 5;
String str3 = String.valueOf(num3);// 推荐方案
String str4 = num3 + "";
// String ->int
String str5 = "5";// 有概率抛出异常(NumberFormatException 数字格式化异常)
int num5 = Integer.valueOf(str5);
int num6 = Integer.parseInt(str5);// 推荐方案
// double String互转
double d1 = 5.5;
String d11 = String.valueOf(d1);
d1 = Double.valueOf(d11);
d1 = Double.parseDouble(d11);
}
@Test
/*
* 内存问题
* */
public void method_03(){
// == 在引用类型比较时比较的是地址
// new出来的内容互相独立,地址一定不同
// Integer缓存 范围(-128-127) Double Float没有缓存
// Integer 和int 比较自动转int后比较
Integer i1 = new Integer(5);
Integer i2 = new Integer(5);
System.out.println(i1==i2);//false
Integer i3 = 500;
Integer i4 = 500;
System.out.println(i3==i4);//false
Integer i5 = 100;
int i6 = 100;
System.out.println(i5 == i6);//true
Double d5 = 100.5;// double->Double才可以自动拆装箱
Double d6 = 100.5;
System.out.println(d5 == d6);//false
Integer i7 = new Integer(100);// 拆
int i8 = 100;
System.out.println(i7 == i8);//true
}
}
总结
== 在引用类型比较时比较的是地址
new出来的内容互相独立,地址一定不同
Integer缓存 范围(-128-127) 注意: Double Float没有缓存
Integer 和int 比较自动拆箱转为int后比较
面试题
int和Integer的区别:
修饰变量
(1)修饰全局变量
初始值不同(int初始值0 ,Integer初始值null)
(2)修饰局部变量
Integer可以通过new的方式赋值
功能
Integer是一个类类型,可以有属性和方法,可以调用属性和方法完成相应功能,int不可以
内存
Integer 缓存(常量池) 堆
int 结合情况 栈中的值 或者对象的堆中的值
== 比较 额外注意内存问题 int只比较内容 ,Integer比较地址