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,超过缓存区域大小
执行结果为:
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——内部类和匿名类、以及垃圾回收机制