面向对象高级(二)

目录

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)