十四.内部类
1.概念
在类中定义的类称为内部类
public class A{ public class B{ } } A为外部类 B为内部类
2.分类
1.成员内部类 位置:类中.方法外 未使用static修饰 2.静态内部类 定义位置:类中.方法外 使用static修饰 3.局部内部类 定义位置:类中,方法中 4.匿名内部类 定义位置:定义在外部类的成员位置上,或实参中
3.成员内部类
成员内部类内部可定义:除去静态成员以外的成员都可以定义 创建对象: 情况1:在所在的外部类中创建该内部类对象 内部类类名 对象名 = new 内部类类名(实参列表); 注意:只是省略this关键字,所以这种创建方式不能再静态方法中使用. 情况2:在其他类中创建该内部类对象 外部类类名.内部类类名 对象名 = 外部类对象.new 内部类名(实参列表);
4.静态内部类
使用static修饰 静态内部类所有的成员都可以定义 创建对象: 外部类类名.内部类类名 对象名 = new 外部类类名.内部类类名(实参列表);
5.局部内部类
注意: 此时不能使用访问权限修饰符 只能在当前方法中使用 可以定义什么: 除去静态成员,其他成员都可以 创建对象: 内部类类名 对象名 = new 内部类类名(实参列表);
6.匿名内部类
概念:没有类名的内部类称为匿名内部类 定义位置:定义在外部类的成员位置上,或实参中 语法: new 父类名或父接口名(){ 属性 方法 }; 注意: 1.一个类只能创建一个对象时,可以使用匿名内部类 2.不能定义静态成员与抽象方法 优点: 1.编写方便 缺点: 2.代码混乱,降低代码可读性
细节:
1.可以直接访问外部类的所有成员,包含私有 2.不能添加访问修饰符,他是一个局部变量 3.作用域:定义他的方法或代码快 4.如果外部类和内部类的成员重名时,内部类访问的话,默认遵循就近原则,如果想访问外部类成员,则可以使用(外部类.this.成员)
十五.包装类
八个基本数据类型所对应的引用数据类型
包装类:
byte ----Byte
short----Short
int------Integer
long-----Long
float----Float
double---Double
boolean--Booleab
char-----Character
提供的方法
parsexxx();
将相应的包装类转换成基本数据类型
整数缓冲区
-128~127
原因:
因为系统中已经创建了-128~127之间有数的对象,在使用自动装箱时,如果值是在该范围内,直接使用已经创建好的对象,如果超过这个返回需要重新创建对象
十六.System
由JDK提供的类
提供属性或方法
static native void arraycopy(Object src,int srcPos,
Object dest, int destPos,
int length)
作用:将原数组中的一段数据复制到新数组
1参:原数组
2参:复制开始的位置
3参:新数组
4参:新数组开始的位置
5参:复制的长度
static native long currentTimeMillis()
作用:获取当前时间与1970年1月1日00:00:00:000的时间差(格林威治时间)
static void exit(int status)
作用:结束当前程序
1参:终止状态码
0:正常退出
1:异常退出
static void gc()
作用:手动调用垃圾回收机制
关于自动装箱,自动拆箱,前面发过
https://blog.csdn.net/qq_51365907/article/details/129824600