Final Instance Variable
- If value changes object to object → instance variable
- Each object has its own copy
- Gets default value from JVM
class Test {
int x;
public static void main(String[] args) {
Test t = new Test();
System.out.print(t.x); // 0
}
}
Rule: Final instance variable must be initialized explicitly.
- At declaration → final int x = 10;
- Instance block
- Constructor
// Declaration
final int x = 10;
// Instance block
{
x = 10;
}
// Constructor
Test() {
x = 10;
}
Invalid: assigning outside constructor/instance block → compile error
Final Static Variables
Static → shared among all objects
class Test {
static int x;
public static void main(String[] args) {
System.out.print(x); // 0
}
}
Rule: Final static must be initialized before class loads.
- At declaration
- Static block
// Valid
final static int X = 10;
// Static block
static {
X = 10;
}
// Invalid
public void m() {
X = 10; // error
}
Final Local Variables
- Declared inside method
- No default value
- Must initialize before use
- Only final allowed
// Error
int x;
System.out.print(x);
// Valid
int x;
System.out.print("Hello");
// Final local
final int x;
System.out.print("Hello");
// Final parameters
void m(final int x) {
// x = 10; // error
}
Example
Summary
- Final Instance → constructor / block / declaration
- Final Static → declaration / static block
- Final Local → must assign before use
0 Comments
Hello