static and final keywords?
Plan your text ad campaign.
Web hosting directory, find affordable web hosting
Data recovery software tools & file recovery utilities to recover lost data
WestNIC provides reliable web hosting services
This answer is part of the Code Style premium content package. You must have a premium content subscription to log in and view the full answer to this question. Use the premium content subscription form below.
A: The static and final modifiers have quite distinct purposes in Java, though they can be used in combination to declare class constants. When the static modifier is applied to a variable or method it belongs to all instances of the class and can be referenced in a static context. In other words, the class does not have to be instantiated before the variable can be read or the method called. That means that static variables must be assigned at compile time and static methods cannot reference instance variables or call instance methods.
The final modifier can be applied to a class definition or method to prevent extension or overriding respectively. This helps the compiler optimise byte code for the class. When the final modifier is declared on a variable it means that its initial assignment will not change during the execution of the code. Final instance variables must be assigned at compile time or in the class' constructor, as in the example below.
More details available to premium content service subscribers:
What is the difference between static and final keywords?
You must make a subscription payment to access areas flagged premium content. Use the form below to create an account via PayPal.
The PayPal service allows you to pay securely and independently in your own currency. Payments are billed to Metacentric Internet Limited. We never handle your credit card details.
The Code Style site has accumulated 8 years' worth of answers to the most common Web development questions. Answers are written in clear English with examples and links to other Web resources. Your subscription provides full answers to all premium content questions listed below and other FAQ sections, plus:
double up to an int?
NumberFormatException back to the main() method?
LinkedList dictionary?
println overloading or overriding?
public static void main(String[]) mean?
equals and ==?
hashCode() used?
NullPointerException in Java?
Rectangle on a Graphics instance?
new operator?
Class.forName() method and the new operator?
Class.forName() scheme?
newInstance()?
Class.forName() runtime polymorphism?
Class.forName(dbDriver) work with DriverManager.getConnection?
StringBuffers match?
StringBuffer?
StringTokenizer for?
Statement and PreparedStatement?
PreparedStatement?