1. Object类
-
Object类 是所有类的父类,所有的类直接或间接继承Object类
-
Object类 中的equals方法
- equals重新前 == equals比较基本数据类型数值,引用数据类型地址值x`
- equals重写后 equals比较的是基本数据类型数值,引用数据类型内容值;== 比较的是基本数据类型数值,引用数据类型地址值
当两个对象的所有属性都相同时,在真实开发中认为二者为同一对象,我们需要重写该类的equals(),hashcode()
-
Object类中的常用方法
1. clone() // 创建一个对象副本 2. toString() // 输出全类名@哈希值 3. equals() // 比较基本数据类型数值,引用数据类型地址值 4. hashCode() // 输出一个int类型的哈希值 一般重写equals时会同时重写hashCode
2. 内部类
-
成员内部类
-
类体
成员变量,成员方法,final变量,常量
-
可以访问外部类内容
成员变量,成员方法,静态变量,静态方法,final变量,常量
-
声明语法
外部类名.内部类名 对象名 = 外部类对象.new 内部类名();
-
调用
// 当内部类中有和外部类同名的属性时 // 通过下面方法调用外部类属性 外部类名.this.成员变量名;
-
-
静态内部类
-
类体
成员变量,成员方法,final变量,常量,静态变量,静态方法
-
可以访问外部类内容
静态变量,静态方法,常量
-
声明语法
外部类名.内部类名 对象名 = new 外部类名.内部类名();
-
-
局部内部类
定义在方法中的内部类,仅在方法中使用
-
类体
不能包含静态
-
可以访问外部类内容
该局部内部类定义在成员方法中时,可以访问外部类所有变量和方法
该局部内部类定义在静态方法中时,可以访问外部类静态变量和方法
-
局部内部类访问外部方法中的局部变量
JDK8之前,此局部变量必须声明为final
JDK8之后,自动转化为final而且final可以省略不写
-
-
匿名内部类
只能创建一次对象,内部类补习继承或实现某个类或接口,内部类中必须重写父类或接口中的方法
语法
// 继承 父类名 引用名 = new 父类名(参数){子类类体}; // 实现 接口名 引用名 = new 接口名(){实现类的类体};
-
Lambda表达式
JDK8新特性 匿名内部类实现接口,此接口仅有一个抽象方法时使用
3. 包装类
基本类型 | 对应包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
基本类型与其对应的包装类之间可以无缝自由互相转换,但是不可以在基本类型转换的同时进行装箱或拆箱
8种包装类中都重写了toString方法,输出的是String类型的字面值
包装类中有一个常量池,优先从常量池中获取值,如果没有则创建新对象