Difference between revisions of "Flow Control"

From Suhrid.net Wiki
Jump to navigationJump to search
Line 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
}