[似乎Java编译器(Jdk8)缺少针对'j = j ++;等赋值的警告;'无效,但会为“ j = ++ j;”等赋值生成警告确实有效。我已附上一个脚本进行演示。
[请注意,您必须选择适当的标志来报告Java编译器java compiler settings中的分配错误
public static void main(String[] args) {
int j = 0;
j = ++j; //Compiler warning: The assignment to variable j has no effect
System.out.println("j="+j); //Prints 1
int i = 0;
i = i++; //Compiler warning: 'None'
System.out.println("i="+i); //Prints 0
}
这是Java编译器的错误吗?
但是警告和缺乏警告是正确的>>]
j =
的j = ++j
部分无效; j
中已经有更新的值。因此,警告很有意义。i =
的i = i++
部分有[作用]:在i
递增到1后,它被赋值为0
-右手表达式的结果。因此,不仅不要求“没有效果”警告,这是错误的。i
情况,您可能有一个不同警告的参数,但是通常,编译器不会进行大量的操作(检查可能是逻辑错误但不是language 错误)。