1.基本包装类
//包装类
/*
byte -> Byte
short -> Short
int -> Integer
long -> Long
float -> Float
double -> Double
char -> Character
boolean -> Boolean
*/
//基本数据类型变为包装类的好处:可以调用很多方便的方法
//2.可以用于基本数据类型和字符串的转换
//演示:
System.out.println(Integer.toBinaryString(60));
//将这个60转成二进制数,并以字符串形式表示
System.out.println(Integer.toOctalString(60));//8进制
System.out.println(Integer.toHexString(60));//16进制
2. int包装类-> Integer
//Integer
//Integer 类在对象中包装了一个基本类型int值
//该类提供了多个方法,能再int类型和String类之间转换
//还提供了处理int类型时非常有用的一些方法
//1.构造方法 Integer(int value) / Integer(String s)
Integer inte1 = new Integer(80);
System.out.println(inte1);
Integer inte2 = new Integer("89");//用这个构造必须字符串指向的是数值类型的
System.out.println(inte2);
//2.获取int的最大值和最小值
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
3. int和String的转换
//int 和 String进行转换
//a: int to String
//0. 和""拼接
int num1 = 100;
String result = num1 + "";
System.out.println(result);
//1. public static String valueOf(int i)
//2. Integer类的toString方法
//3. public static String toString(int i )
String str = Integer.toString(80);
//b: String to int
//1. String -> Integer -> int
//2. public static int parseInt(String s);
int num = Integer.parseInt("89");
System.out.println(num);
4.JDK5的新特性-自动装箱和拆箱
//JDK5 新特性
//自动装箱:把基本类型转换为包装类类型
//自动拆箱:把包装类型转换为基本类型
//演示:
//没有自动拆装箱时:
int num = 100;
Integer i = new Integer(num);
//将基本数据类型包装为对象--手动装箱
//手动拆箱
int y = i.intValue();
//自动的
Integer i2 = 100; //现在可以直接赋值了,自动装箱
int num3 = i2 + 299; //自动拆箱
System.out.println(num3);
//底层和手动是做一样的事情
//注意: Integer i3 = null;时,就不能用这个自动拆箱了
5. Integer常见面试题
//常见面试题
Integer i1 = new Integer(97);
Integer i2 = new Integer(97);
System.out.println(i1 == i2);
System.out.println(i1.equals(i2));
//答案:false/true
//解释:第一个比较地址值,是两个对象不一样。 一般类都会重写Object类的equals方法。自己去看
System.out.println("-----------------");
Integer i3 = new Integer(197);
Integer i4 = new Integer(197);
System.out.println(i3==i4);
System.out.println(i3.equals(i4));
//答案:
//解释:
System.out.println("------------------");
Integer i5 = 127;
Integer i6 = 127;
System.out.println(i5 == i6);
System.out.println(i5.equals(i6));
System.out.println("---------------------");
Integer i7 = 128;
Integer i8 = 128;
System.out.println(i7 == i8);
System.out.println(i7.equals(i8));
//这两道题结合起来看,当为128时,==号比较是false的
//这是因为:-128 到 127 是byte的取值范围,在这个范围中,会自动装箱,在常量中获取
//如果超过了byte的取值范围,那么会重新创建对象