【发布时间】:2017-01-31 22:04:42
【问题描述】:
只是为了练习,我试图在两种不同的场景中运行以下代码,最初我认为它们都可以工作,但是当我运行程序时,一个有效,一个无效,这是有效的代码
public class Test1
{
public static void main(String args[])
{
int counter = 0;
int number = 1;
do{
System.out.println(number);
number++;
counter++;
}while(counter<20);
} }
O/P : 1 2 3 ... {最多打印 19 个}
这是一个没用的
public class Test2
{
public static void main(String args[])
{
int counter = 0;
do{
int data = 0;
System.out.println(data);
data++;
counter++;
}while(counter<20);
} }
O/P : 0 0 0 0 ...{最多打印 19 次 }
【问题讨论】:
-
嗯,是的,您在循环的每次迭代开始时将
data初始化为0。目前尚不清楚为什么您会 expect 打印其他任何内容。每次迭代实际上都有一个单独的data变量。如果您不希望这样,请根据您的第一段代码在循环外声明并初始化它... -
@JonSkeet 知道了,我知道我不应该只是在尝试,但没想到!!
标签: java scope initialization