Java >> Java tutorial >  >> Tag >> switch

Hvorfor virker initialisering af en streng i en if-sætning anderledes end i en switch-sætning?

Det skyldes, at du ikke har angivet, hvilken sæson der skal være i standardtilfældet. Hvad sker der, når måneden ikke er inden for 1-12? season vil ikke blive initialiseret.

Hvis du kun forventer 1-12 som månedsinput, kan du overveje at smide en Exception i default:

default:
    throw new IllegalArgumentException("Invalid month");

I dit første eksempel er der ingen sti gennem koden, der ikke kan tildele en værdi til 'sæson'. I det andet eksempel tildeler standardcasen ikke en værdi, så den sidste udskrift ("maj er...") kan udføres med en ikke-initialiseret værdi.


I din if /else kode, er der en forsikring om, at variablen season vil få en værdi. Det vil sige else erklæring.

Din switch kode har det ikke. Se, hvad der vil ske med variablen season hvis den angivne værdi for måned er 13 -- den får ikke en værdi og forbliver uinitialiseret.


Java tag