final
is used to define constants. The final modifier indicates that the
value of this field cannot change.
Defining
class level constants
Declare the field with final and
static combination
Example
class Person{ static final int MAX_SALARY = 10000000; public static void main(String args[]){ System.out.println(Person.MAX_SALARY); } }
Output
10000000
Defining
Object level constants
Declare the field with final
keyword.
Example
class Person{ final int MAX_SALARY; Person(){ MAX_SALARY = 10000; } Person(int sal){ MAX_SALARY = sal; } public static void main(String args[]){ Person p1 = new Person(1000000); System.out.println(p1.MAX_SALARY); } }
Output
1000000
Some
Points to Remember
1.
You must initialize the static final variables, other wise compiler
throws the error
Example
class Person{ final static int MAX_SALARY; public static void main(String args[]){ System.out.println(Person.MAX_SALARY); } }
When
you try to compile the above program, compiler throws below error
Person.java:1: error: variable MAX_SALARY might not have been initialized class Person{ ^ 1 error
This
is not the case with non final variables.
Example
class Person{ static int MAX_SALARY; public static void main(String args[]){ System.out.println(Person.MAX_SALARY); } }
Output
0
2.Static
final variables must be initialized at the time of creation or in the
static block, Otherwise compiler throws error
class Person{ static final int MAX_SALARY; static{ MAX_SALARY = 1000000; } public static void main(String args[]){ System.out.println(Person.MAX_SALARY); } }
Output
1000000
Above
program compiles and runs fine, since initializing the static final
variable in the static block is completely fine.
3. Trying to initialize the
static final variable other than at the time of creation or in static
block cause the compile time error.
Example
class Person{ static final int MAX_SALARY; Person(){ MAX_SALARY = 1000000; //is a static final, can't be initialized here } public static void main(String args[]){ System.out.println(Person.MAX_SALARY); } }
When
you try to compile the above program, compiler throws the below error
Person.java:5: error: cannot assign a value to final variable MAX_SALARY
MAX_SALARY = 1000000;
^
1 error
4.
You must initialize the final variables whether those are static or
non-static, otherwise compiler throws error
class Person{ final int MAX_SALARY; public static void main(String args[]){ } }
When
you tries to compile the program, Compiler throws below error
Person.java:1: error: variable MAX_SALARY might not have been initialized class Person{ ^ 1 error
5. Final instance variables must
be initialized in the constructor or in the instance blocks.
Example 1
class Person{
final int MAX_SALARY;
Person(){
MAX_SALARY = 10000;
}
}
Example
2
class Person{ final int MAX_SALARY; { MAX_SALARY = 100000; } Person(){ } void setSalary(){ } }
6. Trying to initialize final instance variables, other than in constructor causes compile time error.
class Person{ final int MAX_SALARY; Person(){ } void setSalary(){ MAX_SALARY = 100000; } }
Compiler
throws the below error
Person.java:8: error: cannot assign a value to final variable MAX_SALARY
MAX_SALARY = 100000;
^
1 error
7. final for Reference types:
For references to objects, final ensures that the reference will
never change, meaning that it always refer to the same object.
It makes no guarantees whatsoever about the values inside the object
being referred to staying the same.
8. How to declare global
constants in Java ?
No comments:
Post a Comment