(本文内容有藉鑒的地方,都是記錄自己欠缺的食糧)
-
Lambda 表达式的简单例子:
1.基本语法:
<函数式接口> <变量名> = (参数1,参数2...) -> {
//方法体
}
public interface LambdaTest {
abstract void print();
}
public interface LambdaTest2 {
abstract void print(String a);
}
public interface DefalutTest {
static int a =5;
default void defaultMethod(){
System.out.println("DefalutTest defalut 方法");
}
int sub(int a,int b);
static void staticMethod() {
System.out.println("DefalutTest static 方法");
}
}
public class Main {
public static void main(String[] args) {
//匿名内部类--java8之前的实现方式
DefalutTest dt = new DefalutTest(){
@Override
public int sub(int a, int b) {
// TODO Auto-generated method stub
return a-b;
}
};
//lambda表达式--实现方式1
DefalutTest dt2 =(a,b)->{
return a-b;
};
System.out.println(dt2.sub(2, 1));
//lambda表达式--实现方式2,省略花括号
DefalutTest dt3 =(a,b)->a-b;
System.out.println(dt3.sub(5, 6));
//测试final
int c = 5;
DefalutTest dt4 =(a,b)->a-c;
System.out.println(dt4.sub(5, 6));
//无参方法,并且执行语句只有1条
LambdaTest lt = ()-> System.out.println("测试无参");
lt.print();
//只有一个参数方法
LambdaTest2 lt1 = s-> System.out.println(s);
lt1.print("有一个参数");
}
}
2.引用实例方法:
<函数式接口> <变量名> = <实例>::<实例方法名>
//调用
<变量名>.接口方法([实际参数...])
3.引用类方法:
<函数式接口> <变量名> = <类>::<类方法名称>
//调用
4.引用类的实例方法:
//定义接口
interface <函数式接口>{
<返回值> <方法名>(<类><类名称>,[其他参数...]);
}
<函数式接口> <变量名> = <类>::<类实例方法名>
//调用
<变量名>.接口方法(类的实例,[实际参数...])
<变量名>.接口方法([实际参数...])
5.引用构造器方法:
<函数式接口> <变量名> = <类>::<new>
//调用
<变量名>.接口方法([实际参数...])
1. 一个判断
int a , b,c;
b = a ? true: false;//如果a等于1那么b就等于20,否则等于30
2. 两个判断表达式
b = a ? true: b = c ? true:false
-
Java List
1.list==null,意味着list压根没有地址,在堆内就不存在。
2.list.size( )= 0,意思是堆内有list,但是还没有放元素,其长度随着元素数量变化而变化,暂时为零。
3.list如果为null的话,说明没有进行初始化。这是list调用任何的方法都会抛出空异常。list.size( )=0说明list已经被new过,但是里面没有值。
4.判断时一定要注意先后顺序,如果连list都没有,直接判断ist.size( ),是会报NullPointerException异常的。