mirror of
https://github.com/oldratlee/translations.git
synced 2026-04-04 19:17:58 +08:00
revise
This commit is contained in:
@@ -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>`的子类吗?***
|
||||
|
||||
|
||||
Reference in New Issue
Block a user