先记点东西
- 和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
- StringBuffer的方法是线程安全的(能同步访问)。
- 由于 StringBuilder 有速度优势
- 可变参数 public static void printMax(double...numbers){}
- 对象被垃圾收集器析构(回收)之前调 finalize( )
- 1. 抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。
- 2. 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的。
- 3. 接口中不能还有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法。
- 4. 一个类只能继承一个抽象类,而一个类却可以实现多个接口。
java8 新特性 :
- 可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。
- 可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。
- 可选的大括号:如果主体包含了一个语句,就不需要使用大括号。
- 可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值。
-
方法引用 :
方法引用使用一对冒号(::)。
如果是静态方法,则是ClassName::methodName。如 Object ::equals
如果是实例方法,则是Instance::methodName。如Object obj=new Object();obj::equals;
构造函数.则是ClassName::new
函数式接口 :
函数式接口(Functional Interface)就是一个具有一个方法的普通接口。
例如内置的Predicate是一个布尔类型的函数,该函数只有一个输入参数。Predicate接口包含了多种默认方法,用于处理复杂的逻辑动词(and, or,negate)
Predicate<String> predicate = (s) -> s.length() >
0
;
predicate.test(
"foo"
);
//true
predicate.negate().test(
"foo"
);
//false
这一个功能特性出来后,很多同学都反应了,java 8的接口都有实现方法了,跟抽象类还有什么区别?其实还是有的,请看下表对比。。
相同点 | 不同点 |
1.都是抽象类型; 2.都可以有实现方法(以前接口不行); 3.都可以不需要实现类或者继承者去实现所有方法,(以前不行,现在接口中默认方法不需要实现者实现) | 1.抽象类不可以多重继承,接口可以(无论是多重类型继承还是多重行为继承); 2.抽象类和接口所反映出的设计理念不同。其实抽象类表示的是"is-a"关系,接口表示的是"like-a"关系; 3.接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值;抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。 |
Stream :
将要处理的元素集合转化成一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选, 排序,聚合等
filter, map, reduce, find, match, sorted
stream()
− 为集合创建串行流。
parallelStream()
− 为集合创建并行流。
Optional 类 :
Optional提供很多有用的方法,这样我们就不用显式进行空值检测。
Optional 类的引入很好的解决空指针异常。
Optional
<
Integer
>
a
=
Optional
.
of
(
value2
)
;
a
.
isPresent
(
);
Java
中调用
JavaScript
:
javax
.
script.
ScriptEngineManager
script EngineManager
=
new
javax
.
script.
ScriptEngineManager
(
)
;
ScriptEngine
nashorn
=
scriptEngineManager
.
getEngineByName
(
"
nashorn
"
)
;
nashorn.eval("print('" + name +"')");
JavaScript 中调用 Java:
var
BigDecimal
=
Java
.
type
(
'java.math.BigDecimal'
);
新的日期时间 API :
旧的日期设计不规范
import
java
.
time
.*