importjava.io.*;importjava.net.*;importjava.util.*;publicclassSwitch{// Underscores in numeric literalspublicstaticintUSER_COUNT_LIMIT=1_000_000_000;publicstaticvoidmain(String[]args){// Type inference when creating genericsList<String>fruits=newArrayList<>(args.length);for(Stringa:args){fruits.add(a);}// Strings in switchfor(Stringa:fruits){switch(a){case"apple":System.out.println("eat an apple a day, the doctors go away");break;case"orange":System.out.println("orange juice");break;default:System.out.println("i do not know what you want");break;}}// With 'try-with-resources' no longer need finally to clean up resources.try(BufferedReaderbr=newBufferedReader(newFileReader(args[args.length-1]))){System.out.println(br.readLine());Thread.sleep(1000);// Catch multiple exceptions}catch(InterruptedException|IOExceptione){System.out.print(e.getMessage());}// binary literalsintuserCount=0b1010101;System.out.println("Current we have "+userCount+" users, while limit is "+USER_COUNT_LIMIT);if(userCount<USER_COUNT_LIMIT){System.out.println("We are okay, it is under control");}else{System.out.println("Alert alert alert");}}}
编译并运行:
12345678
[alex:jdk1.7.0_71]$./bin/javac Switch.java -Xlint
[alex:jdk1.7.0_71]$./bin/java Switch apple Switch.java README.html
eat an apple a day, the doctors go away
i do not know what you want
i do not know what you want
<html>
Current we have 85 users, while limit is 1000000000
We are okay, it is under control
importjava.util.*;publicclassLambda<T>{publicvoidapply(List<T>list,Action<T>action){for(Tt:list){action.perform(t);}}publicstaticvoidmain(String[]args){List<String>stuff=newArrayList<>();for(Strings:args){stuff.add(s);}Lambda<String>lambda=newLambda<>();// Use lambda expression to specify actionlambda.apply(stuff,s->System.out.println(s));// Another example of lambda expression for threadingnewThread(()->{for(inti=0;i<10;i++){System.out.println("working "+i+" seconds");try{Thread.sleep(100);}catch(InterruptedExceptione){}}}).start();}}interfaceAction<T>{publicvoidperform(Tt);}
编译并运行:
1234567891011121314
[alex:jdk1.8.0_25]$./bin/javac Lambda.java -Xlint
[alex:jdk1.8.0_25]$./bin/java Lambda apple orange
apple
orange
working 0 seconds
working 1 seconds
working 2 seconds
working 3 seconds
working 4 seconds
working 5 seconds
working 6 seconds
working 7 seconds
working 8 seconds
working 9 seconds
在Java 8中,可以比用匿名内部类更加方便的方式来设置回调。
Android中的Java
那么,Android到底与Java是什么关系呢?有人说它们是一样的。其实没啥关系,Android虽然使用Java语言作为它的主要开发语言,但是它并完全等同于Java SE JDK,JDK中关于UI的AWT和Swing在Android都没有,所以它的API是标准JDK 6的一个子集。Android中的Java是基于Apache的Apache Harmony,与标准Java SE 6语法完全一样,可以看看它们之间的异同,以及Dalvik与Java VM。