Java中的包装类(Interage和String)
包装类的分类
包装类的特点
包装类有了类的属性就可以调用类中的方法,更有了类的特点,还可以进行类型的互相转换,更方便我们使用。
包装类和基本数据类型的转换
- jdk5前的手动装箱和拆箱方式,装箱:把基本数据类型--->包装类型。反之拆箱:包装类型--->基本数据类型
- jdk5以后就是自动拆箱和装箱
- 自动装箱调用的是底层的valueOf方法
Integer 和 String 转换
Integer的创建机制
-
第一
public class Integer_Mechanism { public static void main(String[] args) { Integer integer = new Integer(1); Integer integer1 = new Integer(1); System.out.println(integer == integer1);//false //解释:因为==是判断引用数据类型是判断是不是同一个对象,因为是 new 的所以不是同一个对象 } }
-
第二种
public class Integer_Mechanism {
public static void main(String[] args) {
/**
* 底层源码:
* public static Integer valueOf(int i) {
* if (i >= IntegerCache.low && i <= IntegerCache.high)
* return IntegerCache.cache[i + (-IntegerCache.low)];
* return new Integer(i);
* }
*
* 解释:判断i的范围是不是在-127 ~ 128之间,如果在就创建对象
* 很显然下面的a和m都在这个范围, 并没有new一个对象,所以他们是同一个对象
* 如果不是在-127 ~ 128这个范围就new 一个对象
*/
Integer a = 1;//底层 Integer.valueOf(1);
Integer m = 1;//底层 Integer.valueOf(1);
System.out.println(a == m);//true
Integer a1 = 128;//底层 Integer.valueOf(128);
Integer m1 = 128;//底层 Integer.valueOf(128);
System.out.println(a1 == m1);flase
}
}
-
第三种
public class Intager_ { public static void main(String[] args) { //主要只要有基本数据类型就是判断值是否相等 Integer a = 128; int i = 128; System.out.println(a == i);//T //主要只要有基本数据类型就是判断值是否相等 Integer a1 = 128; int i1 = 128; System.out.println(a1== i1);//T } }
String
- String 是 final 类,不能被其他的类继承
- value 是一个 final 类型, 不可以修改(需要功力):即 value 不能指向新的地址,但是单个字符内容是可以变化
创建String 对象的两种方式
区别
字符串的特性