我是一名 java 初学者,我现在正在处理循环。在处理“for 循环”时,我遇到过这种情况,当使用和不使用大括号执行代码时,我得到了不同的结果。
你能解释一下获得不同输出的原因吗?
我是一名 java 初学者,我现在正在处理循环。在处理“for 循环”时,我遇到过这种情况,当使用和不使用大括号执行代码时,我得到了不同的结果。
你能解释一下获得不同输出的原因吗?
你的问题是关于语言的语法。
从 JLS,该for
语句的基本语法是:
for ( ForInit ; Expression ; ForUpdate ) Statement
例子:
for (int i = 0; i < array.length; i++) System.out.println(array[i]);
在上面的示例中,自然Statement
是System.out.println(array[i]);
。
{ }
)问题是,在 Java 中,语句也可以是block
. Ablock
以花括号 ( {...}
) 开始/结束,并且可以包含一系列其他语句:
// this is a statement
int i = 0;
// this is also a statement, a block statement with two other statements inside
{ int j = 0; int x = 1; }
// now, as a block *is* a statement, and it contains a sequence of statements,
// the construction below is also valid
{ int k = 9; { int j = 0; int x = 1; } { int a = 0; } }
// also notice that, if not inside a String, white spaces don't matter, so
// the statement above is the same as
{
int k = 9;
{ int j = 0; int x = 1; }
{
int a = 0;
}
}
因此,如果您有:
for (int i = 0; i < array.length; i++) Statement1; Statement2;
只有Statement1
是 的一部分for
。
当然,Statement1
可以是一个块,比如{ stmt1_1; stmt1_2; }
,会让你for
看起来像什么:
for (int i = 0; i < array.length; i++) { stmt1_1; stmt1_2; } Statement2;
由于空格无关紧要,您可以以更好的可读方式将其编写为:
for (int i = 0; i < array.length; i++) {
stmt1_1;
stmt1_2;
}
Statement2;
没有大括号,您只包括.之后的语句for
。使用大括号,您将包括其中包含的所有内容(该范围内的所有内容)。
例子:
for (int i = 0; i < 10; i++)
System.out.println("Ten");// Will print "Ten", 10 times.
System.out.println("Once");// Will print "Once", 1 time.
如果包含大括号,它将同时打印它们 10 次。
Java 代码中的空格只是为了便于阅读代码。编译器完全忽略缩进。
请参阅此代码:
for (int i = 0; i < 3; i++)
System.out.println("Hello"); System.out.println("World");
将打印
Hello
Hello
Hello
World
相同的输出将由
for (int i = 0; i < 3; i++) System.out.println("Hello");
System.out.println("World");
您的问题是循环中有多个语句。使用大括号,这些语句在循环的每次迭代中执行一次。如果没有大括号,则每次迭代都会执行第一条语句,其余语句在循环完成后执行。
不带大括号:
for (int i = 0; i < 10; i++)
System.out.println("Inside for loop");
System.out.println("Outside for loop");
带牙套L
for (int i = 0; i < 10; i++){
System.out.println("Inside for loop");
System.out.println("Also inside for loop");
}
以下示例演示了您的问题:
这将使第一行循环 100 次,但只需将其他两行作为常规打印运行。
for(int i = 0; i < 100; i++)
System.out.println("Test Print 1");
System.out.println("Test Print 2");
System.out.println("Test Print 3");
这将打印所有行 100 次。
for(int i = 0; i < 100; i++){
System.out.println("Test Print 1");
System.out.println("Test Print 2");
System.out.println("Test Print 3");
}