Java编译器是否存在“赋值无效”警告/错误的错误

问题描述 投票:0回答:1

[似乎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编译器的错误吗?

java compiler-warnings javacc
1个回答
1
投票

但是警告和缺乏警告是正确的>>]

  • j =j = ++j部分无效; j中已经有更新的值。因此,警告很有意义。
  • 但是i =i = i++部分有[作用]:在i递增到1后,它被赋值为0-右手表达式的结果。因此,不仅不要求“没有效果”警告,这是错误的。
  • [对于i情况,您可能有一个不同警告的参数,但是通常,编译器不会进行大量的操作(检查可能是逻辑错误但不是

    language 错误)。

© www.soinside.com 2019 - 2024. All rights reserved.