标签:cas method 表达式 source tor turn 程序 编程 推断
JDK1.0 95 Vector Hashtable synchronized
JDK1.2 98 List Set Map
JDK1.5 2004 泛型 枚举 标注 多线程 自动封箱 静态导入 可变长参数(本文档有讲解)
JDK6 Arrays.copyOf()
JDK7 String作为switch表达式
switch(String) --> 原理是获得字符串hashCode(int)、再做等值判断
例如:switch("a”) { case “a” : {①} }
==> switch(“a”.hashCode()) { case “a”.hashCode():if(“a”.equals(“a”) {①}}
int字面值 0b0001111(二进制表达) 分隔符(int a = 1000_000_000)
try-with-resources Fork-Join 泛型自动推断
JDK8 2014 lambda表达式
避免冗余代码, 提高程序的可重用性
提高可重用性: 将代码的不变部分, 和可变部分 分离
Lambda表达式 匿名内部类的简便写法 实现的接口必须只有一个抽象方法 (函数式接口)
语法:
Runnable r= new Runnable(){
public void run(){
System.out.println("hehe");
}
};
Runnable r = ()->{System.out.println("hehe");};//与上等价
Callable<Integer> c = new Callable<Integer>(){
public Integer call(){
return 10;
}
}
Callable<Integer> c = ()->10;//与上等价
方法引用
main:
A a2 = (MyClass mc)->mc.method();
A a3 = MyClass::method;
B b2 = (MyClass mc , String s)->mc.method(s);
B b3 = MyClass::method;
C c2 = (MyClass mc,String s1,String s2)->mc.method(s1, s2);
C c3 = MyClass::method;
D d2 = ()->MyClass.staticMethod();
D d3 = MyClass::staticMethod;
E e2 = (s)->System.out.println(s);
E e3 = System.out::println;
interface A {
void act(MyClass mc);
}
interface B {
void act(MyClass mc, String s);
}
interface C {
void act(MyClass mc,String s1, String s2);
}
interface D {
void act();
}
interface E {
void act(String s);
}
------------------
class MyClass {
public void method() {
System.out.println(“method()”);
}
public void method(String s) {
System.out.println(“method(String)”);
}
public void method(String s, String s) {
System.out.println(“method(String, String)”);
}
public static void staticMethod() {
System.out.println(“static method()”);
}
}
接口的新语法:
default void print(){}
static void print(){}
例题在最后;
标签:cas method 表达式 source tor turn 程序 编程 推断
原文地址:https://www.cnblogs.com/jwnming/p/13093767.html