Difference between revisions of "Flow Control"
From Suhrid.net Wiki
Jump to navigationJump to searchLine 30: | Line 30: | ||
* The case constant must evaluate to the same type as the switch expression. | * The case constant must evaluate to the same type as the switch expression. | ||
− | * The case constant must be a COMPILE TIME constant. | + | * The case constant must be a '''COMPILE TIME''' constant. |
** This means that we can use a constant typed literally like case 1: or case 2: | ** This means that we can use a constant typed literally like case 1: or case 2: | ||
** Or the variable should be a final variable that is assigned a literal value. | ** Or the variable should be a final variable that is assigned a literal value. | ||
+ | |||
+ | Example: | ||
+ | |||
+ | <syntaxhighlight lang="java5"> | ||
+ | final int a = 1; | ||
+ | final int b; | ||
+ | b = 2; | ||
+ | int x = process(); | ||
+ | switch(x) { | ||
+ | case a : | ||
+ | case 2 : | ||
+ | case b : //Error. b is not a compile-time constant | ||
+ | } | ||
+ | |||
+ | </syntaxhighlight> | ||
[[Category:OCPJP]] | [[Category:OCPJP]] |
Revision as of 00:33, 19 July 2011
If Statement
- The expression in an if-statement must evaluate to a boolean expression.
- The else part is optional for an if-statement.
- The else belongs to the closest preceding if that doesn't have an else. Example:
if(a > b) System.out.println("a > b");
if(a > 1) System.out.println("a > 1");
else System.out.println("a < 1");
//The else belongs to if(a>1)
Switch Statement
- General form:
switch(expression) {
case constant1: code block
case constant2: code block
default: code block
}
- Expression has to evaluate to char, byte, short, int or enum.
- This implies that only variables that can be implicitly promoted to int can be used in the expression.
- NO long, float or double.
- The case constant must evaluate to the same type as the switch expression.
- The case constant must be a COMPILE TIME constant.
- This means that we can use a constant typed literally like case 1: or case 2:
- Or the variable should be a final variable that is assigned a literal value.
Example:
final int a = 1;
final int b;
b = 2;
int x = process();
switch(x) {
case a :
case 2 :
case b : //Error. b is not a compile-time constant
}