PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Variableninitialisierung bei switch-Funktion



Waxolunist
14-11-2006, 14:36
Hallo

Bin heute auf was interessantes gestoßen und verstehe es nicht. Manchmal ist es schon seltsam, da beschäftigt man sich mit den kompliziertesten Frameworks und dann scheitert man an einer einfachen Switch-Anweisung.

Wieso funktioniert folgendes:


public class Switch {

public static void main(String[] args) {

int i = 1;

switch(i) {
case 0:
String s = "test";
System.out.println(s);
break;
case 1:
s = "test";
System.out.println(s);
break;
}

}
}

Wieso muss ich nur einmal die Variable s angeben. Ich dachte switches sind nichts anderes als einfache if-else-Angaben.

Also mit if else würde es so aussehen:


public class Switch {

public static void main(String[] args) {

int i = 1;

if (i == 0) {
String s = "test";
System.out.println(s);
} else if (i == 1) {
String s = "test";
System.out.println(s);
}

}
}

Wie werden denn Variablen in Switch-Anweisungen initialisiert? Werden die zur Compilezeit alle initialisiert?

mfg, christian

Liberty
14-11-2006, 15:14
Moin,

ich hab' mir angewöhnt, in solchen Grundsatzfragen in die Language Specification zu schauen, z.B. hier:

http://java.sun.com/docs/books/jls/third_edition/html/statements.html#14.11

oder

http://java.sun.com/docs/books/jls/third_edition/html/defAssign.html#16.2.9

So wie ich Dich einschätze, kannst Du mit der technischen Darstellung gut leben... ;-)

So long,

Liberty

Waxolunist
15-11-2006, 08:45
Danke, sollte ich mir vielleicht auch angewöhnen. Hat aber Klärung gebracht.