有时当我们声明并初始化一个变量时,假设我们有一个int i =10;
,那么在一些代码之后,这个变量将被修改,如下面的代码所示
public class reset {
public static void main(String[] args) {
// TODO Auto-generated method stub
int i = 10;
int co = 1;
while (co < 10) {
i++;
System.out.println(i + "*" + co + "=" + i * co);
if (i == 99) {
i = 11; //line 11
co++;
}
}
}
}
然后在某些时候(这里是第11行)我们需要重新初始化然后变量,如果我们有任何语言功能自动执行它,那就不好了,例如
reset:i
我认为它对生产力非常有益,不是吗?
答案 0 :(得分:4)
我们需要重新初始化变量,如果我们有自动执行任何语言功能,那会不会很好?
没有
我认为它对生产力非常有益,不是吗?
没有
将变量重置为其起始值在许多情况下表明变量的范围很大。因此,使用干净的代码,您几乎不需要这样的功能。
当然,每项功能都需要以更复杂的语言为代价。
答案 1 :(得分:2)
初始化线
int i = 10;
只需创建字节码指令即可将值10赋值给变量。该任务与任何其他任务没有什么不同。
要实现重置,需要为每个变量保留一些额外的元数据来说明特殊的初始值是什么。那个元数据当前没有保存在符号表中,因为Java中没有概念对于初始值&#39;。额外的开销将与reset命令的效用进行权衡。
可能是一个好主意,但你可以通过声明一个常量并重新分配常量来获得相同的东西。
答案 2 :(得分:1)
这段代码怎么样?我可以从初学者的角度理解你的问题,但通常需要更多的练习来了解为什么不需要某些结构:
public class NoReset {
private static final int X_START = 11;
private static final int X_END = 99;
private static final int Y_START = 1;
private static final int Y_END = 9;
public static void main(String[] args) {
for (int y = Y_START; y <= Y_END; y++) {
for (int x = X_START; x <= X_END; x++) {
final int result = x * y;
System.out.printf("%d * %d = %d%n", x, y, result);
}
}
}
}
请注意,您不应嵌套到多个循环,但创建“隐藏循环”至少是危险的,在代码中跟踪i
等变量非常困难。
答案 3 :(得分:0)
如果您想使用当前的Java语言来执行您想要的操作,那么只需在每个要为其执行“重置”的类中提供一个函数,如:
private void reset() {
var = xxx;
var2 = yyy;
...
}