前一阵子面试的时候突然被问到java1.8版本的新特性。虽然新特性可能不是很常用,但是了解还是很有必要的。如果你想写含有新特性的程序,那么首先最好更新一下你的IDE,10.9之前的MyEclipse已经不是很好用了,这里有MyEclipse2017破解版可供下载。
default 关键字
Java 8支持为接口添加非抽象的方法实现,只要使用 default关键字即可。很经典的一个问题就是:java接口中能不能有非抽象方法?,这个问题主要考你的基本功,一般笔试时要答:不能。但是面试的时候说出:Java 8新添加了default关键字支持非抽象方法,肯定会为你加分。
package CharactJava8;
public interface FunctionInter {
default public void syso(){
System.out.println("Hello World!");
}
}
package CharactJava8;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
FunctionInter fi = new FunctionInter() {};
fi.syso();
}
}
main方法中输出:Hello World! 。 default修饰的方法可以在实现类中被重写或者直接使用。需要注意的是:**接口不能用default方法提供对Object类的任何方法的默认实现。**特别是,这意味着从接口里不能提供对equals,hashCode或toString的默认实现。有这种限定的一个原因是:如果在接口中对Object类方法默认实现,会使得编辑器更难以判断什么时候该调用默认的方法什么时候调用Object中的方法。
静态方法与默认方法
与此同时,在java1.8中也可以定义静态方法。在之前的JDK版本中是不支持的,正如Collection类的所有静态方法都存放在Collections中一样,我们习惯使用类名+s来表示静态方法类。以后对于这些静态方法我们可以处理的更简单。
Lambda 表达式
Lambda是第十一个希腊字母λ的发音,在c语言中早就有了这种用来简化代