2012-03-31 12 views
1
if(true)  
    System.out.println("one"); 
System.out.println("two); 
System.out.println("three); 

Zuerst scheint es komisch, aber es funktioniert. Meine Frage dient nur zur Verdeutlichung: Wenn ich keine Code-Blöcke verwende, wird danach noch etwas betroffen sein; wenn ich Codeblock nur innerhalb der Codeblocks verwenden wird betroffen sein - habe ich recht? Oder gibt es etwas, von dem ich nicht weiß, dass es durch dieses Beispiel passiert?Java-Syntax - wenn ohne Codeblocks

+0

Was haben Sie sonst noch erwartet? Das macht keinen Sinn. – Corbin

+0

Weil, wenn ich das versuche, erwarte ich einen Fehler, aber es funktioniert. Ich weiß, es ist nur gesunder Menschenverstand, aber was ist, wenn ich nur Dinge klarstelle. – user1293258

+0

Sie würden einen Syntaxfehler erwarten oder Dinge, die nicht gedruckt werden? (Übrigens, lernen die Leute nicht mehr von Blöcken? Das ist wie die fünfte Frage in 3 Tagen - nicht gemein, nur neugierig.) – Corbin

Antwort

9

Ihr Fall ist äquivalent zu:

if(true){ 
    System.out.println("one"); 
} 
System.out.println("two"); 
System.out.println("three"); 

und Ausgang

one 
two 
three 

if Anweisung führt Operator (in Ihrem Fall sein, es ist nur System.out.println("one"), dass dahinter folgt Zahnspange Abbildung ({}.) ist auch der Operator, zum Beispiel:

if(false) 
System.out.println("one"); 
System.out.println("two"); 
System.out.println("three"); 

/*output will be: 
two 
three 
*/ 

//and in this case there will be no output 
if(false){ 
    System.out.println("one"); 
    System.out.println("two"); 
    System.out.println("three"); 
} 
0

In Java (und in ähnlichen Sprachen) entspricht eine einzelne Anweisung einem Block, der diese einzelne Anweisung enthält.

1

In Java wenn kann auf zwei Arten

if(true){ 
//statement 1 
//statement 2 
//statement 3 
} 

geschrieben werden, wenn Sie mehrere Zeilen ausführen wollen, müssen Sie Block verwenden. Wenn Sie eine einzelne Zeile verwenden möchten, können Sie mit out-Block verwenden.

aber eine Zeile Anweisung kann auch in Block geschrieben werden, es wird gleich funktionieren.

if(true){ 
//statment 1 
} 

Arbeiten wie bei aus Block

0

Die Java Language Specification for the if statement definiert:

IfThenStatement: 
    if (Expression) Statement 

Statement weiter defined as:

Statement: 
    StatementWithoutTrailingSubstatement 
    <removed for brevity> 

StatementWithoutTrailingSubstatement: 
    Block 
    <removed for brevity> 

Mit anderen Worten: Ein if-Anweisung ein Statement enthält , die einesein kann(eine Liste von Anweisungen in Klammern).