专栏名称: OSC开源社区
OSChina 开源中国 官方微信账号
目录
相关文章推荐
51好读  ›  专栏  ›  OSC开源社区

关于 Java 你不知道的 10 件事

OSC开源社区  · 公众号  · 程序员  · 2017-04-30 08:39

正文

请到「今天看啥」查看全文


是的,这是真的。即使你的大脑解析器不能立刻理解上面方法的返回类型,但其实他们都是一样的!类似的还有下面这些代码片段:

你认为这很疯狂?想象在上面使用 JSR-308 / Java 8 类型注解 。语法的可能性指数激增!

类型注解。看起来很神秘,其实并不难理解。

或者换句话说:

当我做最近一次提交的时候是在我4周的假期之前。

对你来说,上面的内容在你的实际使用中找到了吧。

是否等价于:

然而,事实并非如此。我们来测试一下就知道了。

输出结果:

由此可见,三目条件运算符会在有需要的情况下,对操作数进行类型提升。注意,是只在有需要时才进行;否则,代码可能会抛出 NullPointerException 空引用异常:


5

你还没搞懂复合赋值运算符

很奇怪吗?来看看下面这两行代码:

直观看来它们等价,是吗?但可其实它们并不等价!JLS 解释如下:

E1 op= E2 形式的复合赋值表达式等价于 E1 = (T)((E1) op (E2)),这里 T 是 E1 的类型,E1 只计算一次。

非常好,我想引用 Peter Lawrey Stack Overflow 上的对这个问题的回答

使用 *= 或 /= 来进行计算的例子

或者

或者

或者

现在看到它的作用了吗?我会在应用程序中对字符串进行乘法计算。因为,你懂的...


6

随机整数

现在有一个更难的谜题。不要去看答案,看看你能不能自己找到答案。如果运行下面的程序:

… “有时候”,我会得到下面的输出:







请到「今天看啥」查看全文