为什么这样提示你改正。
int x = 3;
x = x;
你需要把上面的代码改写成这样。
int a = 3;
int b = a;
a = b;
第二段代码即使与第一段代码的逻辑基本相同,只是更加复杂,也会被Intellij Idea所接受.上面的例子是真实业务逻辑代码的简化。没有理由在这里提供真实的代码,因为即使是上面的例子,Intellij也会提示您更正。这不是一个错误。代码编译后运行正常。自赋值不是发生在构造函数中,为什么第一段代码不能正常运行?
如果有帮助,我可以拿出更详细的代码。
int i = 0;
int b = 10;
do {
for (i = i; i < b; i++){
System.out.println(i);
}
b=b+10;
} while (//some condition);
System.out.println("Final i: "+ i);
比方说,我需要打印i从0到9,然后,如果/some条件为真,打印下一个i,从10到19等迭代,Intellij提示修正i=i部分的逻辑是什么?
因为所有(半路出家的)IDE都会对此发出警告,原因是以下问题。
public class A {
private int a;
public A (int a) {
// problem, because nothing is actually done.
a = a;
// what you actually want.
this.a = a;
}
....
}
字段 a
的名称与参数 a
,因此指定 a = a
是一个 自派而不是打算分配给该字段的 this.a = a
.
说句题外话:这不仅是构造函数的问题,只是一个很好的例子。