Java学习日记|Java学习日记14——Lambda表达式以及一些高级语法

Java学习日记14——Lambda表达式(λ表达式)以及一些高级语法 Lambda表达式的基本写法
Java1.8以后才有的。

(参数) -> (结果) //例如: (String s) -> s.length(); x -> x*x; () ->{System.out.println("aaa"); }

在Java中的Lambda表达式,大体相当于其他语言的匿名函数或者指针函数。然而在Java中,则可以认为是匿名类的一个实例。至于匿名类,在前面已经简单陈述过了。
举一个简单的例子:
Runnable dolt=new Runnable(){ public void run() { System.out.println("普通写法"); } } new Thread(doit).start(); //线程 // Runnable doit = () ->{System.out.println("Lambda 写法"); }//只有一句,也可以不写花括号 new Thread(doit).start(); //线程 // new Thread(()->{System.out.println("Lambda+线程 写法"); }).start();

Lambda表达式大大的简化了书写,可用于线程、数学计算、按钮事件处理等等。由于Lambda只能表示一个函数,所以能写成Lambda的接口要求包含最多只能一个抽象函数。可以将Lambda表达式将代码当成数据来处理。
包装类
主要是将基本类型的包装成引用类型(object),例如int->Interger
共有8类:
Boolean,Byte,Short,Character,Integer,Long,Float,Double
Integer i = new Integer(10);

装箱与拆箱
装箱 : Integer I = 10; 拆箱 : int i = I;

枚举
枚举是一种特殊的class类型,在简单情况下,用法与其他语言的enum基本一致。
enum Light{Red,Yellow,Green};

可以在enum中添加字段、方法、构造方法等。
注解
这里的注解又称为注记、标记、标注等,不等于注释,在各种语法要素上加上附加信息,供编译器或其他程序使用,所有的注解都是java.lang.annotation.Annotation的自子类。
例如:
@Override//表示覆盖父类方法 @Deprecated//表示过时的方法,会产生警告 @SuppressWarnings//编译不产生警告

自定义注解:比较复杂比较少用,下面给一个小小例子
public @interface Author{ String name(); }

引用与指针
Java中是没有指针的,但是引用(new一个新对象,对对象就行操作)实际就是指针,但是相比较于C语言,Java中的引用是受控制的安全的,比如:
?1.会检查真空指引;
?2.没有指针运算;
?3.不能访问没有引用的内存;
?4.自动回收垃圾;
相等于不等
基本数据类型的相等
数值类型:转换后比较
浮点数,一般不使用==进行比较
Double.NaN = = Double.NAN结果为false
Boolean型数据无法与int相比较。
一些特例:
Integer i = new Integer(10); Integer j = new Integer(10); System.out.println(i==j); //输出是false,因为这里是两个对象。 Integer m = 10; Integer n = 10; System.out.println(m==n); //输出是true,因为利用了包装,-128~127之间的数有缓存 Integer p = 200; Integer q = 200; System.out.println(p==q); //输出是false,超过缓存区域大小

【Java学习日记|Java学习日记14——Lambda表达式以及一些高级语法】执行结果为:
false true false

String对象的特殊性,判断相等时,不要使用==。而是使用equals。
String hello = "Hello",hel = "Hel",lo = "lo"; System.out.println(hello == ("Hel"+"lo")); //true System.out.println(hello == ("Hel"+lo)); //false System.out.println(hello == new String("Hello")); //flase,新的对象String System.out.println(hello == ("Hel"+lo).intern()); //true

如果你对Java有兴趣,可以了解一下前面几期的基础知识!下面附上链接:
Java编程基础认知:Java学习日记1——基础认知
Java面向对象编程认识:Java学习日记2——面向对象编程认知
Java程序的基本结构认识:Java学习日记3——程序类型与构成认知
Java的输入输出方法总结:Java学习日记4——Java输入输出方法总结
Java的数据类型、变量、常量、运算符:Java学习日记5——数据类型、变量、常量、运算符、数组
Java学习日记6——类、字段、方法、this的使用:Java学习日记6——类、字段、方法、this的使用
Java学习日记7——类的继承、super使用规则:Java学习日记7——类的继承、super使用规则
Java学习日记8——修饰符:Java学习日记8——public、static、private、final、abstract、protected
Java学习日记9——接口(长文预警):Java学习日记9——接口(长文预警)
Java学习日记10——Java中的变量及其传递:Java学习日记10——Java中的变量及其传递
Java学习日记11——多态和虚方法调用:Java学习日记11——多态和虚方法调用
Java学习日记12——构造方法及其初始化、构造方法的执行过程——Java学习日记12——构造方法及其初始化、构造方法的执行过程
Java学习日记13——内部类和匿名类、以及垃圾回收机制——Java学习日记13——内部类和匿名类、以及垃圾回收机制

    推荐阅读