3. 这些都是二维数组 这是真的。你可能无法立刻理解上面方法的返回类型,但它们都是一样的。类似于下面的方法: 你肯定认为这疯了。想象一下,为上面的方法使用 JSR-308 / Java 8 的类型注解。句法的数量将会激增。 4. 你不明白条件表达式 你认为你在使用条件表达式时明白一切吗?让我告诉你吧,你不明白。大多数人都会认为下面两个代码片段是等价的: 真的一样吗? 不一样。我们来验证一下: 程序的输出结果为: 1.0 没错!条件运算符在必要的时候将实现数据类型的提升。下面的语句将会抛出一个NullPointException。 点这里获取更多细节。 5. 你也不明白复合赋值运算符 看下面的代码: 乍一看它们应该是等价的,但事实上不是。见 JSL(Java语言规范): 复合赋值表达式 E1 op= E2 与 E1 = (T)((E1) op (E2)) 是等价的,T的类型与E1相同,此外 E1仅计算一次。 这真是太美了,我想引用Peter Lawrey's 关于堆栈溢出问题的回答: 6. 随机整数 这是一个难题。不要参看解答,你能独立的解决问题吗? 运行下面的代码: 我有时候会得到如下输出: 922214548236183391933384 这怎么可能? 答案在这。通过反射覆盖 JDK's 的 Integercache,然后使用自动装箱和自动拆箱机制。 运行上面的代码,你就可以得到类似的结果了。 |