Tag: ocpjp

a =(a ++)*(a ++)在Java中给出奇怪的结果

我正在学习OCPJP考试,所以我必须了解Java的每一个奇怪的细节。 这包括前后增量操作符应用于variables的顺序。 下面的代码给了我奇怪的结果: int a = 3; a = (a++) * (a++); System.out.println(a); // 12 答案不应该是11吗? 或者,也许13? 但不是12! 跟进: 以下代码的结果是什么? int a = 3; a += (a++) * (a++); System.out.println(a);

为什么我不能添加两个字节,并得到一个int,我可以添加两个最后的字节获得一个字节?

public class Java{ public static void main(String[] args){ final byte x = 1; final byte y = 2; byte z = x + y;//ok System.out.println(z); byte a = 1; byte b = 2; byte c = a + b; //Compiler error System.out.println(c); } } 如果涉及int-sized或更小的任何expression式的结果总是int,即使两个字节的总和适合一个字节。 为什么当我们添加两个字节的最终字节? 没有编译器错误。

为什么Double.NaN == Double.NaN返回false?

我刚刚学习OCPJP的问题,我发现这个奇怪的代码: public static void main(String a[]) { System.out.println(Double.NaN==Double.NaN); System.out.println(Double.NaN!=Double.NaN); } 当我运行代码时,我得到: false true 当我们比较两个看起来相同的东西时,输出是false ? NaN是什么意思?