This commit is contained in:
Jerry Lee
2014-11-23 20:23:21 +08:00
parent 9e7164b36c
commit 575d4017e4

View File

@@ -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<? super C>`的子类吗?***