hi, what does it mean by compile time constant ? does it mean its a final variable?
thanks in advance
Keith Lynn
Ranch Hand
Joined: Feb 07, 2005
Posts: 2341
posted
0
Not exactly.
This is the definition from the Java Language Specification 15.28.
A compile-time constant expression is an expression denoting a value of primitive type or a String that does not complete abruptly and is composed using only the following:
* Literals of primitive type and literals of type String (�3.10.5) * Casts to primitive types and casts to type String * The unary operators +, -, ~, and ! (but not ++ or --) * The multiplicative operators *, /, and % * The additive operators + and - * The shift operators <<, >>, and >>> * The relational operators <, <=, >, and >= (but not instanceof) * The equality operators == and != * The bitwise and logical operators &, ^, and | * The conditional-and operator && and the conditional-or operator || * The ternary conditional operator ? : * Parenthesized expressions whose contained expression is a constant expression. * Simple names that refer to constant variables (�4.12.4). * Qualified names of the form TypeName . Identifier that refer to constant variables (�4.12.4).
Compile-time constant expressions are used in case labels in switch statements (�14.11) and have a special significance for assignment conversion (�5.2). Compile-time constants of type String are always "interned" so as to share unique instances, using the method String.intern.
megha joshi
Ranch Hand
Joined: Feb 20, 2007
Posts: 206
posted
0
To add to the above,
A compile time constant is a final variable which is instantiated at the time of declaration itself(at compile time) . Eg : final int x = 5; is a compile time constant.
Eg2 : final int x; x = 5; Now here x becomes a runtime constant .