Java static keyword
The static keyword can be used in 3 scenarios
1) static variables2) static methods3) static blocks of code.
Lets look at static variables and static methods first.
Contents
[hide]
1static variable
2static method
3Assignment
4static block
static variable
static method
It is a method which belongs to the class and not to the object(instance)
Important Note
main method is static , since it must be be accessible for an application to run , before any instantiation takes place.
Lets learn the nuances of the static keywords by doing some excercises!
Assignment
The goal of this assignment is to learn working of static variables & method
Step 1) Copy the following code into a editor
class Student {
int a; //initialized to zero
static int b; //initialized to zero only when class is loaded not for each object created.
Student(){
//Constructor incrementing static variable b
b++;
}
public void showData(){
System.out.println("Value of a = "+a);
System.out.println("Value of b = "+b);
}
//public static void increment(){
//a++;
//}
}
class Demo{
public static void main(String args[]){
Student s1 = new Student();
s1.showData();
Student s2 = new Student();
s2.showData();
//Student.b++;
//s1.showData();
}
}
Step 2) Save & Compile the code. Run the code as, java Demo.
Step 3) Expected output show below
Following diagram shows , how reference variables & objects are created and static variables are accessed by the different instances.
Step 4) It is possible to access a static variable from outside the class using the syntax ClassName.Variable_Name. Uncomment line # 27 & 28 . Save , Compile & Run . Observe the output.
Step 5) Uncomment line 15,16 & 17 . Save , Compile & Run.
Step 5) Error = ? This is because it is not possible to access instance variable "a" from static method "increment".
static block
The static block, is a block of statement inside a Java class that will be executed when a class is first loaded in to the JVM
class Test{
static {
//Code goes here
}
}
A static block helps to initialize the static data members, just like constructors help to initialize instance members
전재 하 다http://www.javatutorialhub.com/wiki/All_about_%22static%22
Question:
Quick question -
When are static fields initialized? If I never instantiate a class, but I access a static field, are ALL the static blocks and private static methods used to instantiate private static fields called (in order) at that instant?
What if I call a static method? Does it also run all the static blocks? Before the method?
Answer:
A classes static initialization normally happens immediately before the first time one of the following events occurs:
See JLS 12.4.1. It is also possible to force a class to initialize (if it hasn't already initialized) by using
Class.forName(String, boolean, ClassLoader)
전재 하 다http://stackoverflow.com/questions/3499214/java-static-class-initialization
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.