内部类
名词解释
内部类:在类中定义的类称为内部类
外部类:在java文件中,不在类中定义的类称内部类,一个java文件中只能有一个公共外部类,该类类名必须与java文件名一致
内部类分类
类中方法外
成员内部类
静态内部类
方法中
局部内部类
值,实参
匿名内部类
成员内部类
如何定义:
定义位置:类中方法外
语法
访问权限修饰符 class 内部类名{
}
该内部类有什么?
不用static修饰的都可以有,包括但不限于静态属性,静态方法,静态代码块等
如何创建该内部类?
内部类类名 对象名 = 外部类对象.new 内部类类名(实参列表);
注意:
当内部类属性或方法与外部类重名时
this.属性名或方法名 表示内部类属性或方法
外部类名.this.属性名或方法名 表示外部类属性或方法
静态内部类
如何定义
定义位置:类中方法外
语法:
访问权限修饰符 static class 内部类名{
}
该内部类有什么?
类中有的他都有
如何创建该内部类?
内部类名 对象名 = new 外部类类名.内部类类名(实参列表);
注意:
1、不能直接使用外部类的非静态成员;
2、不能使用外部类的this
局部内部类
如何定义
定义位置:方法中
语法:
class 类名{
}
该内部类有什么?
不能使用static修饰成员
如何创建内部类?
内部类名 对象名 =new 内部类名(实参列表);
注意
1、没有访问权限修饰符
2、只能在声明的方法中使用,而且必须在定义内部类之后使用
3、内部类方法所在的局部变量与所在方法中的局部变量重名时,不能区分
匿名内部类
object(所有类的父亲)
了解
1、如果一个类没有写继承关系,那么他默认继承与object
2、所有类的对象都可以转换为object的对象
常用方法:
toString:打印对象时,默认调用对象的toString
注意:object提供的toString方法默认返回值是 包名.类名@哈希码值对象的十六进制
如果要打印对象的属性信息,需要重写toString方法
getClass:获取该类的类对象
gethashCode:获取该对象的哈希码值
finallize:对象被回收前,由系统调用
equals:比较对象是否一致,默认比较的是对象的内存地址,如果要比较对象的属性,需要重写equals方法
system
概念:系统
常用方法:
public static void gc():手动调用java垃圾回收机制(gc)
public static native void arraycopy():复制数组
参1:复制哪个数组
参2:从哪个位置开始
参3:要复制到哪个数组
参4:从哪个位置开始复制
参5:要复制几个数据
public static native long currentTimeMillis(): 获取当前时间与格林威治时间1970年1月1 日 00:00:00的时间差,单位毫秒
public void static exit(in status):退出当前程序,参数0为正常退出,不为0为异常退出