303 | 包装类

目录

    • 包装类 wrapper
      • 装箱和拆箱
        • 注意
      • 包装类和String的转换
        • 包装类(integer)-> String
        • String -> 包装类(integer)
      • Integer 常见题

包装类 wrapper

包装类–针对八种基本数据类习性相应的引用类型
303 | 包装类_第1张图片

装箱和拆箱

  • 装箱: 基本类型->包装类型;拆箱:包装类型 ->基本类型
  • jdk5以前手动装箱和拆箱,jdk5以后自动装箱和拆箱
// 手动装箱
int n1 = 100;
Integer integer = Integer.valueOf(n1);
// 手动拆箱
int i = integer.intValue();
// 自动装箱
int n2 = 100;
Integer integer2 = n2; //底层仍使用的是 new Integer.valueOf
// 自动拆箱
int n3 = integer2; //底层仍使用的是 intValue方法

注意

Object obj1 = true? new Integer(1):new Double(2.0)
System.out.println(obj1); // 输出1.0,三元运算符是一个整体!!!!

包装类和String的转换

包装类(integer)-> String

Integer i = 100;
  • String str1 = i + "";
  • String str2 = i.toString();
  • String str3 = String.valueOf(str2);

String -> 包装类(integer)

String str1 = "1234";
  • Integer i1 = Integer.paeseInt(str1);// 自动装箱
  • Integer i2 = new Integer(str1);//构造器
  • Integer i3 = Integer.valueOf(str1);

Integer 常见题

public void method(){
	Integer i = new Integer(1);
	Integer j = new Integer(1);
	System.out.println(i==j) // false new的是两个不同对象

	Integer m = 1;
	Integer n= 1;
	System.out.println(m==n) // true 源码:在-128和127之间是直接返回类加载时已经创建好的对象,是同一个对象
	
	Integer m = 128;	
	Integer n= 128;
	System.out.println(m==n) // false 源码:不在范围内是new对象

	Integer x1 = 128;
	int y1 = 128;
	System.out.println(x1==y1) // true 因为有int基本类型在,判断的是值相等,而不是对象地址
}

你可能感兴趣的:(Java基础,java)