内部类
成员内部类
内部类定义在外部类的成员位置
成员:可以使用成员修饰符,public static ...
类:可以继承类,可以实现接口
内部类中可以直接使用外部类中的所有的内容,包括私有的
内部类中不可以直接定义静态的内容,除了静态的常量,静态的内容要定义在静态内部类当中
其他类中测试使用内部类中的内容
Outer01.Inner in=out.new Inner();
Outer01.Inner in=new Outer01().new Inner();
局部内部类
局部内部类不可以使用成员修饰符修饰(比如:public,static...不包括final)
只能在当前定义局部内部类的方法中可以通过内部类的对象使用内部类中的成员,通过类可以使用静态
局部内部类所再的方法的参数,在jdk1.8之后默认,1.7之前需要显示定义
私有内部类
私有内部类中可以使用外部类中所有的内容,包括私有的
私有内部类只能在外部类中可以通过对象使用私有内部类中的私有内容,其他类中不能使用
静态内部类
静态内部类可以定义静态的内容可以定义成员的内容
在静态内部类中使用外部类中的非静态的内容,要通过外部类的对象去使用
在外部类中可以通过类名使用静态内部类中的静态内容,需要通过对象使用静态内部类中的成员内容
在其他类中可以通过外部类名.静态内部类名.静态内容使用静态内部类中的静态内容
new 外部类.静态内容类() 创建静态内部类的对象使用静态内部类中的成员
匿名内部类
没有名字的内部类
简化没有独自作用|功能的实现|子类
用完销毁,不能使用第二次
引用接收匿名内部类对象的地址---接口多态
Lambda表达式
目标:简化匿名内部类
语法: ()->{}
() :-->重写的抽象方法的参数列表
-> :箭头符号,箭头函数,Lambda符号
{} :重写的抽象方法的方法体
前提:函数式接口
函数式接口:只有一个抽象方法的接口就是函数式接口
@FunctionalInterface : 强制检查是否为函数式接口
数组
相同数据类型的有序集合
特点
数组是引用数据类型
数组是定长的,长度一旦确定不可改变
数组中所有数据的数据类型保持一致
数组中的数据存在顺序(索引:从0开始)
声明方式
数据类型[] 数组名;
数据类型:可以是基本数据类型|引用数据类型
数据类型的作用:规定数组中所有数据的数据类型
初始化
动态初始化:先创建后赋值
数据类型[] 数组名 = new 数据类型[长度];
数组中的数据如果不赋值有默认值
静态初始化:创建的同时赋值
数据类型[] 数组名 =new 数据类型[]{值1,值2,值3...};
数据类型[] 数组名 ={值1,值2,值3...}; --推荐
操作(获取|修改)数组中的数据
通过索引操作 数组名[索引|下标]
长度
数组名.length
数组中最后一个数据的下标
数组名.length-1
遍历
普通for循环,可以获取可以修改,因为是操作索引(位置)
增强for循环|for..each ,只能获取每一个数据,不能修改
for(数据类型 变量名: 数组名|容器名){
变量-->指代数组中的每一个数据
}
数组索引越界异常
ArrayIndexOutOfBoundsException
索引为负数
索引超出最大范围
可变参数
数据类型相同的0~多个参数
使用...表示可变参数
编译器会自动为可变参数隐式创建一个数组,通过操作数组的方式使用可变参数
可变参数必须放在参数列表的最后位置
java内部类
最新推荐文章于 2024-04-25 12:25:03 发布