目录
内部类
成员内部类(了解)
定义格式:如下
调用格式:如下
public class Outer {
// 外部类变量
private int heart=100;
public class Inner {
// 内部类变量
private int heartbeat=150;
// 内部类方法
public void show(){
int heart=10;
System.out.println (heart);//10
// 调用内部类当前变量-- this.变量名
System.out.println (this.heartbeat );//150
// 调用外部类变量 ---外部类名.this.变量名
System.out.println (Outer.this.heart );//100
}
}
public static void main(String[] args) {
// 创建内部类对象,先new外部类对象,在通过外部类对象变量名new内部类名
Outer. Inner inner = new Outer ( ).new Inner ( );
// 调用内部类方法
inner.show ();
}
}
静态内部类(了解)
定义格式:
public class Outer {
public static int a=12;
String name1="dhakhd";
/**
* 静态内部类
*/
public static class Inner{
// 代码....
}
}
调用格式:外部类.内部类 对象名=new 外部类.内部类
局部内部类(了解)
定义格式: 鸡肋语法,无用。
调用格式:在方法中调用
匿名内部类(重点)
定义格式:
public interface Swimming {
void swim();
// 接口可以作为方法的一个参数
}
class Test{
public static void main(String[] args) {
//这是匿名内部类对象,而不是接口对象,接口是不能创建对象的。
Swimming s = new Swimming ( ) {
// 重写方法
@Override
public void swim() {
System.out.println ("狗刨式游泳");
}
};
// 调用方法
s.swim ( );
}
}
使用场景:作为方法上的参数传递。
枚举
概念:他是一个特殊的类,它里面第一行代码只能定义常量。
格式:
public enum Sex {
// 第一行只能定义常量。
// int a;//因为他不是常量,定义在第一行会报错
MAN,WOMEN;
int a;//正常
}
特点:
第一行只能是常量。构造器私有。
默认继承Enum,里面有两个静态方法:如下。
values()---返回枚举的所有对象。
valueOf(String name)----根据名字获取对应得对象。
使用场景:
1、switch中可以搭配枚举使用,例如
public enum Sex {
MAN,WOMEN;
}
class Test{
public static void main(String[] args) {
Scanner sc = new Scanner ( System.in);
System.out.println ("请输入您的选择:" );
String type = sc.next ( );
Sex value = Sex.valueOf (type);
switch (value){
case MAN -> System.out.println ("我是男的" );
case WOMEN -> System.out.println ("我是女的" );
}
}
}
2、做信息标记
泛型
本质:创建对象的时候,把具体的类型传递给类,增强代码的通用性
定义格式:
泛型类:public calss 类名<E,T,K>{…}
泛型接口:public interface 接口名<E,T,K>{…}
泛型方法:public <T>返回值类型 方法名(参数){..}
泛型的统配、上下限:
针对泛型类或者接口
ArrayList<?>---- 可以存放所有的类型
上限----> ? extends 父类,父类或者对应他的子类使用。
下限----> ? super 子类,子类或者继承的父类使用。
注意事项
泛型擦除:在编写中可以编写泛型,编译后会把泛型给抹掉
泛型只能时引用数据类型。
API(Object)
Object
toString()
本来的作用:返回对象的地址值
重写之后的作用:返回对象的具体内容
equals()
原先作用:比较两个对象的地址值
重写之后的作用:比较两个对象的具体内容
clone:复制一个新的内容一样的对象。
浅克隆:复制一个一模一样的对象。
深克隆:基本数据类型复制具体的值、字符串复制具体的地址、其他引用数据类型就先创建新的对象,再复制到新的对象中。
Objects(工具类):做一些检查。
方法:
equals(o1,o2)---先判空,在对内容进行判断
isNull(obj)-----判断对象是否为空
nonNull(obj)----判断对象是否不为空