From 575d4017e4e5ede5343f70c4fb4fcd257dc982a3 Mon Sep 17 00:00:00 2001 From: Jerry Lee Date: Sun, 23 Nov 2014 20:23:21 +0800 Subject: [PATCH] revise --- 10-things-you-didnt-know-about-java/README.md | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/10-things-you-didnt-know-about-java/README.md b/10-things-you-didnt-know-about-java/README.md index 1e314ad..d5180a5 100644 --- a/10-things-you-didnt-know-about-java/README.md +++ b/10-things-you-didnt-know-about-java/README.md @@ -14,7 +14,7 @@ 1. 其实没有受检异常(`checked exception`) --------------------------------------- -是的!`JVM`才不知道这类事情,只有`Java`语言才会知道。 +是的!`JVM`才不知道这事儿,只有`Java`语言才会知道。 今天,大家都赞同受检异常是个设计失误,一个`Java`语言中的设计失误。正如 *Bruce Eckel* [在布拉格的`GeeCON`会议上演示的总结](http://www.geecon.cz/speakers/?id=2)中说的, `Java`之后的其它语言都没有再涉及受检异常了,甚至`Java` 8的新式流`API`(`Streams API`)都不再拥抱受检异常 @@ -58,7 +58,7 @@ class Test { } ``` -是的!`Java`语言不允许一个类里有2个方法是『***重载一致***』的,而不会关心这2个方法的`throws`子句或返回类型实际是不同的。 +是的!`Java`语言不允许一个类里有2个方法是『***重载一致***』的,而不会关心这2个方法的`throws`子句或返回类型实际上是不同的。 但是等一下!来看看[`Class.getMethod(String, Class...)`](http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html#getMethod-java.lang.String-java.lang.Class...-)方法的`Javadoc`: @@ -166,7 +166,7 @@ class Test { 4. 你没有掌握条件表达式 --------------------------------------- -呃,你认为自己知道什么时候该使用条件表达式?面对现实吧,你还不知道。大部分人会下面的2个代码段是等价的: +呃,你认为自己知道什么时候该使用条件表达式?面对现实吧,你还不知道。大部分人会下面的2段代码是等价的: ```java Object o1 = true ? new Integer(1) : new Double(2.0); @@ -197,7 +197,8 @@ System.out.println(o2); 1 ``` -哦!如果『需要』,条件运算符会做数值类型的类型提升,这个『需要』有非常非常非常强的引号。因为,你觉得下面的程序会抛出`NullPointerException`吗? +哦!如果『需要』,条件运算符会做数值类型的类型提升,这个『需要』有非常非常非常强的引号。因为…… +你觉得下面的程序会抛出`NullPointerException`吗? ```java Integer i = new Integer(1); @@ -220,7 +221,7 @@ i += j; i = i + j; ``` -直觉上认为,2行代码是等价的,对吧?但结果即不是!`JLS`(`Java`语言规范)指出: +直觉上认为,2行代码是等价的,对吧?但结果不是!`JLS`(`Java`语言规范)指出: > 复合赋值运算符表达式 `E1 op= E2` 等价于 `E1 = (T)((E1) op (E2))` > 其中`T`是`E1`的类型,但`E1`只会被求值一次。 @@ -252,7 +253,9 @@ System.out.println(ch); // prints 'a' 6. 随机`Integer` --------------------------------------- -这条其实是一个迷题,先不要看解答。看看你能不能自己找出解法。运行下面的代码: +这条其实是一个迷题,先不要看解答。看看你能不能自己找出解法。 + +运行下面的代码: ```java for (int i = 0; i < 10; i++) { @@ -454,7 +457,7 @@ class Test { } ``` -很难的问题,[`Ross Tate `](http://www.cs.cornell.edu/~ross/)回答过这个问题。答案实际上是不确定的: +一个很难的问题,[`Ross Tate `](http://www.cs.cornell.edu/~ross/)回答过。答案实际上是不确定的: ***`C`是`Type`的子类吗?***