In Java, when final keyword is used with a variable of primitive data types (int, float, .. etc), value of the variable cannot be changed.
For example following program gives error because i is final.
public class Test { public static void main(String args[]) { final int i = 10; i = 30; // Error because i is final. } } |
When final is used with non-primitive variables (Note that non-primitive variables are always references to objects in Java), the members of the referred object can be changed. final for non-primitive variables just mean that they cannot be changed to refer to any other object
class Test1 { int i = 10; } public class Test2 { public static void main(String args[]) { final Test1 t1 = new Test1(); t1.i = 30; // Works } } |
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
Attention reader! Don’t stop learning now. Get hold of all the important Java and Collections concepts with the Fundamentals of Java and Java Collections Course at a student-friendly price and become industry ready.
Recommended Posts:
- Unreachable statement using final and non-final variable in Java
- Assigning values to static final variables in Java
- Final local variables in Java
- Static and non static blank final variables in Java
- Private and final methods in Java
- final, finally and finalize in Java
- Blank Final in Java
- Using final with Inheritance in Java
- final keyword in java
- Instance variable as final in Java
- Final static variable in Java
- final vs Immutability in Java
- Difference between Final and Abstract in Java
- Final arrays in Java
- Why a Constructor can not be final, static or abstract in Java?
- Are static local variables allowed in Java?
- Variables in Java
- Using Variables in JShell of Java 9
- Difference between static and non-static variables in Java
- Static Variables in Java with Examples

