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 对象的两种方式

 

区别

 

 

字符串的特性

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2022-03-08 14:58  平凡晨  阅读(251)  评论(0编辑  收藏  举报