内部类
概念
在类中定义的类,称为内部类
分类
成员内部类
定义的位置:类中方法以外
静态内部类
定义的位置:类中方法以外
注意:使用static修饰的成员内部类
局部内部类
定义的位置:方法中
匿名内部类(*)
定义的位置:值或实参中
成员内部类
定义位置:
在类中方法以外定义的类
语法:
访问权限修饰符 class 类名{
}
注意:
成员内部类中不能定义静态属性,静态方法,静态代码块
创建对象的方式:
内部类名 对象名 = 外部类对象.new 内部类类名(实参列表);
注意:
在该内部类所在的外部类的普通方法中创建该内部类对象
可以使用this作为不外部类对象
this.new 内部类类名(实参列表);
此时this可以忽略不写,所以可以简写为new 内部类类名(实参列表);
当外部类属性与内部类属性重名时候可以这么区分
外部类名.this.属性名:外部类属性
this.属性名:内部类属性
静态内部类
定义位置:
在类中方法以外定义的类
语法:
访问权限修饰符 static class 类名{
}
注意:
外部类可以定义的,该内部类都可以定义
创建对象:
内部类类名 对象名 = new 外部类类名.内部类类名(实参列表);
注意:
静态内部类中不能使用外部类非静态成员
局部内部类
定义的位置:
方法中
语法:
class 类名{
}
注意:
局部内部类中不能定义静态属性,静态方法,静态代码块
创建对象:
内部类类名 对象名 = new 内部类类名(实参列表);
注意:
只能在定义该内部类的方法中使用
必须在定义该类下,方法结束前
匿名内部类(*)
定义的位置:
值或实参中
语法:
父类名/接口名 对象名 = new 父接口名/父类名(){
属性
方法
要重写的方法
}
特点:
一个匿名内部类只能创建一个对象
优点:
代码书写方便
缺点:
导致代码混乱,使其阅读性较差(新手)
包装类
概念
八个基本数据类型对应的引用数据类型
包装类有哪些?
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character
数据类型转换
将字符串转换为整数
int 转换后的数字 = Integer . parseInt(字符串);
将字符串转换为小数
double 转换后的数字 = Double . parsenDouble(字符串);
将字符串转换为布尔
boolean 变量名 = Boolean . parsenBoolean(字符串);
将各种类型转换为字符串
String 变量名 = " "+要转换的数据
自动拆箱与自动装箱
自动拆箱:
将基本数据类型的包装类对象转换为基本数据类型
自动装箱:
将基本数据类型在转换为对应的包装类的对象
整数缓冲区
区间:-128~127
常用类
Random
随机数
使用步骤:
1,创建对象
Random 对象名 = new Random();
2,获取随机数
数据类型 变量名 = 对象名.方法名();
常用方法:
nextInt(最大值)
newBoolean()
Scanner
键盘录入
使用步骤:
1,创建对象
Scanner 对象名 = new Scanner(System . in);
2,等会用户输入
数据类型 变量名 = 对象名 . 方法名();
常用方法:
next()
nextInt()
nextLong()
...
System
系统
属性:
in:输入
out:输出
err:错误输出
常用方法:
static arraycopy(object src , int srcPos , object dest , int destPos , int length)
src:要拷贝的数组
srcPos:拷贝开始位置
dest:目标数组
destPos:从那个位置开始写入
length:拷贝数据的个数
注意:destPos+length < dest . length
作用:拷贝数组
static currentTimeMillis();获取当前系统时间距离1970年1月1日00:00:00(格林威治时间)的时间差,单位毫秒
Arrays
数组操作工具类
提供的静态方法:
sort():
toString(数组):将数组转换为特定格式的字符串