Java学习笔记——包装器类

Java学习笔记——包装器类

Java的八种基本数据类型对应的包装器类分别为:Byte,Short,Character(char类型),Integer(int型),Long,Float,Double, Boolean。(默认值为null)

创建包装器类型对象的两种方式:

  • 构造方法:new;
    Integer i = new Integer(1);
  • 调用包装器类型的valueOf方法。
    Double d = Double.valueOf(3.14);

包装器类型对象共同的特点:
对象一旦赋值,其值不能再改变。
// 对象指向的变量的值不能改变,但可以指向其他变量

Character c1 = Character.valueOf('a');
	Character c2 = Character.valueOf('b');
	System.out.println(c1+":"+c2);
	c2 = Character.valueOf('c');
	System.out.println(c2);
	c2 = 'd';
	System.out.println(c2);

打印结果:
在这里插入图片描述

包装器类型与基本数据类型的转换

在这里插入图片描述

Character c1=Character.valueOf('a');
	System.out.println(c1.charValue());

打印结果:a

装箱、拆箱

在Java中一些运算或程序对数据类型是有限制的,比如:++/–操作符只能操作基本类型数据,集合中只能存放包装器类型对象等等。

Integer y = new Integer (1);
		int x = y.intValue();
		System.out.println(x);
		x++;
		y = new Integer(x);
		System.out.println(y);

打印结果为:1 2

Integer y = new Integer (1);
		y++;
		System.out.println(y);

打印结果为:2
// y++之前和之后所引用的内存地址不同

基本数据类型会被加宽到更宽泛的基本数据类型
例:short s1=5; //将5加宽成整形

基本数据类型和对应的包装器类型是不同的数据类型

选择重载时匹配哪个方法时遵循以下原则:

  • 是否有直接匹配的(如果参数是包装器类型,只能直接匹配)
  • 是否加宽后直接能够匹配的
  • 是否装箱后能够匹配的
  • 先装箱后加宽后能否匹配
    可以先装箱,后加宽(int可以通过Integer编程Object)
    // 不能从一种包装器类型加宽的另一种包装器类型
  • 是否有不定长参数能够匹配的

包装器类型和String类型对equals方法进行重写,判断值是否相同,其他类的equals和==没有区别,都是比较地址是否相同