复习:J&C:Object / hash值 / equals() / toString() / 装箱拆箱
基本类型和包装对象带来的其实只有混乱。——大飞哥,^_^
在Java中,基本类型变量不是(严格意义上的)对象。因为:
但是,Java提供了和基本类型相对应的类
演示:这些类由class定义,继承自Object,可以调用Object及其自有的类成员……
被称之为包装对象。
-------------------------
#记忆小窍门#
和基本类型相比,包装对象:
-------------------------
以下讲解,以int和Integer为例。
很多时候,你会觉得int和Integer不分彼此:
Integer i = 20; //直接赋值 i = new Integer(30); //用构造函数赋值 i = Integer.valueOf(100); //用静态方法赋值 int j = 50; //可以互相赋值 i = j; j = i; //可以用 == 进行比较 System.out.println(i == j); //使用++等运算符 j++; i++;
@想一想@:这些赋值运算等过程中发生了什么?
但Integer才是引用类型对象,所以只有Integer才可以:
当一个Integer为null值的时候:
Integer i = null;以下运算都会报NullPointerException异常:
int j = i;
int j = 0; System.out.println(i == j);但是两个Integer比较的时候不会报异常,
Integer j = 20; System.out.println(i == j);@想一想@:为什么?
i++;
@猜一猜@:true还是false?
Integer i = 20; Integer j = Integer.valueOf(20); System.out.println(i == j);然后,我们把i和j的值都变成986,再试一试。(演示)
发生了什么?!
Integer j = Integer.valueOf(i); //这样都不行!PS:当Integer和int进行比较的时候,会比较他们的值。
@想一想@:为什么要这样做?有必要么?
建议:
多快好省!前端后端,线上线下,名师精讲
更多了解 加: