이 게시물에서는 메서드가 정적 및 비정적 멤버와 상호 작용하는 방식과 정적 지역 변수가 그렇지 않은 이유에 중점을 둘 것입니다. 허용된. 이는 Java 개발자에게 일반적인 인터뷰 주제이자 중요한 개념입니다.
이 게시물은 이 시리즈의 이전 게시물에서 다룬 개념을 바탕으로 작성되었습니다. 정적 키워드를 처음 사용하는 경우 여기에서 논의된 주제를 자세히 살펴보기 전에 더 나은 기초를 위해 정적 블록 및 정적 변수를 확인하는 것이 좋습니다.
정적 메서드는 클래스 수준에서 작동하므로 인스턴스 멤버에 직접 액세스할 수 없습니다.
package keywords.static_keyword; public class StaticVariables { // Static and non-static variables static int idStatic = 1; // Shared across all instances int id; // Unique to each instance String name; // Unique to each instance // Static block – Runs once when the class is loaded static { displayStatic(); // Call to static method // Cannot access non-static method in static block display(); // --> Compilation error } // Constructor to initialize non-static variables public StaticVariables(String name) { this.id = ++idStatic; // Increment static ID for every new instance this.name = name; } // Non-static method: Can access both static and non-static members void display() { System.out.println("Instance Method:"); System.out.println("Static ID: " + idStatic + ", Instance ID: " + id + ", Name: " + name); } // Static method: Can only access static members directly static void displayStatic() { System.out.println("Static Method:"); System.out.println("Static ID: " + idStatic); // Static local variables are not allowed static int localVar = 10; // --> Compilation error } public static void main(String[] args) { // Call static method directly displayStatic(); // Create instances to access non-static methods StaticVariables obj1 = new StaticVariables("Object1"); StaticVariables obj2 = new StaticVariables("Object2"); // Access non-static methods through objects obj1.display(); obj2.display(); } }
Java는 메소드나 블록 내에서 정적 지역 변수를 허용하지 않습니다.
package keywords.static_keyword; public class StaticVariables { // Static and non-static variables static int idStatic = 1; // Shared across all instances int id; // Unique to each instance String name; // Unique to each instance // Static block – Runs once when the class is loaded static { displayStatic(); // Call to static method // Cannot access non-static method in static block display(); // --> Compilation error } // Constructor to initialize non-static variables public StaticVariables(String name) { this.id = ++idStatic; // Increment static ID for every new instance this.name = name; } // Non-static method: Can access both static and non-static members void display() { System.out.println("Instance Method:"); System.out.println("Static ID: " + idStatic + ", Instance ID: " + id + ", Name: " + name); } // Static method: Can only access static members directly static void displayStatic() { System.out.println("Static Method:"); System.out.println("Static ID: " + idStatic); // Static local variables are not allowed static int localVar = 10; // --> Compilation error } public static void main(String[] args) { // Call static method directly displayStatic(); // Create instances to access non-static methods StaticVariables obj1 = new StaticVariables("Object1"); StaticVariables obj2 = new StaticVariables("Object2"); // Access non-static methods through objects obj1.display(); obj2.display(); } }
static void displayStatic() { static int localVar = 10; // --> Compilation error }
Context | Access Static Members | Access Non-Static Members | Allow Static Local Variables? |
---|---|---|---|
Static Method | Yes | No | No |
Non-Static Method | Yes | Yes | No |
Static Block | Yes | No | No |
정적 메소드와 멤버는 Java의 필수 도구입니다. 주요 내용은 다음과 같습니다.
이러한 규칙을 이해하면 프로그램에서 정적 메서드를 효과적으로 사용할 수 있습니다.
Java 기초
어레이 인터뷰 필수
Java 메모리 필수
컬렉션 프레임워크 필수
즐거운 코딩하세요!
위 내용은 정적 키워드: 메서드의 정적 및 비정적 멤버에 액세스의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!