我是一个java初学者,我正在研究循环。在处理“for循环”时,我遇到过这种情况,当代码执行时带有和不带括号时我会得到不同的结果。
你能解释一下获得不同产出背后的原因吗?
答案 0 :(得分:3)
如果没有大括号,您只需在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.
如果你包括大括号,它会打印两次。
答案 1 :(得分:3)
你的问题是关于语言的语法。
From the 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
。 A block
以大括号({...}
)开始/结束可以包含一系列其他陈述:
// 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;
答案 2 :(得分:1)
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");
答案 3 :(得分:0)
您的问题是循环中有多个语句。使用大括号,这些语句在循环的每次迭代中都会执行一次。没有大括号,第一个语句会在每次迭代时执行,其余语句在循环完成后执行。
没有大括号:
for (int i = 0; i < 10; i++)
System.out.println("Inside for loop");
System.out.println("Outside for loop");
使用bracesL
for (int i = 0; i < 10; i++){
System.out.println("Inside for loop");
System.out.println("Also inside for loop");
}
答案 4 :(得分:0)
以下示例演示了您的问题:
这会将第一行循环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");
}