1. Only Integers, char, String and Enum are allowed in Switch statement.
switch(1.1){
case 1.1: System.out.println("1");
case 2.1: System.out.println("2");
case 3.2: System.out.println("3");
}
results in Compilation Error : Cannot switch on a value of type double. Only convertible int values, strings or enum constants are permitted
switch(1){
case 1.1: System.out.println("1");
case 2.1: System.out.println("2");
case 3.2: System.out.println("3");
}
results in Compilation Error : Type mismatch: cannot convert from double to int
2. If there are no break statements in case blocks, it will execute all statements either till the next break statement or end of switch block
switch(1){
case 1: System.out.println("1");
case 2: System.out.println("2");
case 3: System.out.println("3");
default: System.out.println("default");
}
results in 1 2 3 default
switch(1){
case 1: System.out.println("1");
case 2: System.out.println("2");
case 3: System.out.println("3");
break;
default: System.out.println("default");
}
results in 1 2 3
3. Default case will be executed if there is no match, and statements thereafter till break or end of switch
switch(4){
case 1: System.out.println("1");
case 2: System.out.println("2");
default: System.out.println("default");
case 3: System.out.println("3");
}
results in default 3
4. Two Cases cannot have same value
switch(1){
case 1: System.out.println("1");
break;
case 1: System.out.println("2");
break;
case 3: System.out.println("3");
break;
default: System.out.println("default");
break;
}
results in Compilation Error: Duplicate case
5. Characters and their ASCII value can be used interchangeably
switch(65){
case 'A': System.out.println("1");
break;
case 66: System.out.println("2");
break;
case 3: System.out.println("3");
break;
default: System.out.println("default");
break;
}
results in 1.
switch(65){
case 'A': System.out.println("1");
break;
case 65: System.out.println("2");
break;
case 3: System.out.println("3");
break;
default: System.out.println("default");
break;
}
results in Compilation Error: Duplicate case
6. In Case of Enum in the switch statements, Enum options with the Enum prefix or default should be the cases.
enum colour {RED, BLUE, GREEN, BLACK}
colour cl = colour.BLUE;
switch(cl){
case BLUE: System.out.println("1");
break;
case GREEN: System.out.println("2");
break;
case BLACK: System.out.println("3");
break;
default: System.out.println("default");
break;
}
results in 1
enum colour {RED, BLUE, GREEN, BLACK}
colour cl = colour.BLUE;
switch(cl){
case BLUE: System.out.println("1");
break;
case GREEN: System.out.println("2");
break;
case YELLOW: System.out.println("3");
break;
default: System.out.println("default");
break;
}
results in compilation error: YELLOW cannot be resolved or is not a field
enum colour {RED, BLUE, GREEN, BLACK}
colour cl = colour.BLUE;
switch(cl){
case colour.BLUE: System.out.println("1");
break;
case colour.GREEN: System.out.println("2");
break;
case colour.YELLOW: System.out.println("3");
break;
default: System.out.println("default");
break;
}
results in compilation error: The qualified case label colour.BLUE must be replaced with the unqualified enum constant BLUE.