面向对象高级(二)
目录
1.匿名內部类
2.Lambda表达式
3.String
4.ArrayLists集合
1.匿名內部类
是一种特殊的局部内部类
所谓匿名:指的是程序员不需要为这个类声明名字,默认有个隐藏的名字。
new 接口或类(参数值...){
类体(一般是方法重写);
};
new Aniaml(){ @override public void cry(){ } }特点:匿名内部类本质上是一个子类,并会直接创建出一个子类对象
作用:用于更方便的创建一个子类对象
2.Lambda表达式
可以用于替代某些匿名內部类对象,从而让程序更加简洁,可读性更好。
(被重写方法的形参列表)-> {
被重写的方法体代码。
}
注意:Lambda表达式只能替代函数式接口的匿名內部类
什么是函数式接口:有且仅有一个抽象方法的接口。
@FunctionalIterface声明函数式接口的注解
public class LambdaDemo1{ public static void main(String[] args){ Swim s1 = () -> { System.out.prinln("学生贼快"); } s1.swimming(); } } @FuctionalInterface interface Swin{ void swimming{}; }简化规则:
参数类型全部可以省略不写。
如果只有一个参数,参数类型省略的同时“{}”也可以省略,但多个参数不能省略“{}”
如果Lambda中只有一行代码,大括号可以省略不写,同时要省略",",如果这行代码是return语句,也需去掉return语句。
静态方法引用:
类名::静态方法引用
使用场景:如果某个lambda表达式只是调用一个静态方法。并且”->“前后参数一致,就可以使用静态方法引用。
实例方法引用:
类名::实例方法引用
使用场景:如果某个lambda表达式只是调用一个实例方法。并且”->“前后参数一致,就可以使用静态方法引用。
特定类的方法引用:
特定的类名称::方法
Arrays.sort(names,String::compareToIgnose)如果某个Lambda表达式只是调用一个特定类型的实例方法,并且前面参数列表的第一个参数是作为方法的主调,后面的所有参数都是作为该实例方法的入参的,则此时就可以使用特定类型的方法引用。
构造器引用:
类名::new
如果某个Lambda表达式只是在创建对象,并且“->”前后参数情况一致,就可以使用构造器引用。
3.String
| 构造器 | 说明 |
| public String() | 创建一个空白字符串内容,不含任何内容 |
| public String(string original) | 根据传入的字符串内容,来创建字符串对象 |
| public String(char[] chars) | 根据传入的字符数组,来创建字符串对象 |
| public String (bytes[] bytes) | 根据传入的字节内容,来创建字符串对象 |
4.ArrayLists集合
| 常用方法名 | 说明 |
| public boolwan add(e) | |
| public void add(int index ,E element) | |
| public E get(int index) | |
| public int size() | |
| public E remove(int index) | |
| public boolean removez(Object o) | |
| public E set(int index, E element) |