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,超过缓存区域大小

执行结果为:

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——内部类和匿名类、以及垃圾回收机制

你可能感兴趣的:(Java学习日记,指针,java,编程语言,lambda)