How are final non-static variables different from static variables? As I understand it, final variables can be assigned to only once. It means that a value of a non-static final variable is shared among all class objects. It sounds pretty much like a static variable to me. What is the difference then (if any)?