정적 키워드의 세 가지 주요 기능:
(권장 튜토리얼: Java 입문 튜토리얼)
정적 정적 멤버 변수
정적 정적 멤버 메서드
정적 정적 코드 블록
분석:
1 . static 정적 멤버 변수
설명: 멤버 변수가 static 키워드를 사용하는 경우 이 변수는 더 이상 개체 자체에 속하지 않고 해당 개체가 속한 클래스에 속합니다. 여러 개체가 동일한 데이터를 공유합니다.
코드 예:
학생 클래스를 구축하고 두 개의 정적 멤버 변수인 교실 교실과 idCounter를 설정합니다. main() 메소드에서 두 개의 학생 개체 one과 two를 인스턴스화하고 한 개체의 room에만 값을 할당하면 two.room의 값이 one.room의 값과 동일한 것을 알 수 있습니다. .
room은 static 키워드를 사용하기 때문에 클래스에 속하고 더 이상 객체 자체에 속하지 않으며 여러 객체가 공유할 수 있음을 알 수 있습니다. idCounter는 정적 변수이고 한 번만 초기화되므로 개체가 생성될 때마다 id가 1씩 증가합니다.
public class Demo01StaticField { public static void main(String[] args) { Student one=new Student("郭靖",19); Student two=new Student("黄蓉",16); one.room="101教室"; System.out.println("姓名:"+one.getName()+",年龄:" +one.getAge()+",教室:"+one.room +",学号:"+one.getId()); //姓名:郭靖,年龄:19,教室:101教室,学号:1 System.out.println("姓名:"+two.getName() +",年龄:"+two.getAge()+",教室:"+two.room +",学号:"+two.getId()); //姓名:黄蓉,年龄:16,教室:101教室,学号:2 } } public class Student { private int id; //学号 private String name; //姓名 private int age; //年龄 static String room; //所在教室 private static int idCounter=0; //学号计数器,每当new了一个新对象的时候,计数器++ public Student() { this.id= ++idCounter; } public Student(String name, int age) { this.name = name; this.age = age; this.id= ++idCounter; } public int getId() { return id; } public void setId(int id) { this.id = id; } //name和age的Getter,Setter方法同上id,省略 }
2. 정적 정적 멤버 메서드
설명: 멤버 메서드가 static 키워드를 사용하면 마찬가지로 정적 메서드가 됩니다. 정적 메소드는 객체에 속하지 않고 클래스에 속합니다.
정적 수정 멤버 메소드의 장점: 새로운 객체의 번거로움과 리소스 소모를 피하고 [클래스 이름]을 통해 직접 사용할 수 있습니다.
코드 예:
멤버 변수, 정적 멤버 변수, 멤버 메서드 및 정적 멤버 메서드가 있는 새 Myclass 클래스를 만듭니다. 멤버 메소드가 멤버 변수와 정적 변수 모두에 액세스할 수 있음을 알 수 있습니다. 정적 메서드는 정적 변수에만 액세스할 수 있고, 비정적 변수에는 액세스할 수 없으며, this 키워드를 사용할 수 없습니다. 이 클래스를 사용하는 경우 static 키워드를 사용하면 객체를 생성할 필요 없이 클래스 이름을 통해 직접 사용할 수 있습니다. 이 클래스의 정적 메서드의 경우 클래스 이름을 생략할 수 있습니다.
public class Demo02StaticMethod { public static void main(String[] args) { //非静态方法使用:1.首先创建对象 MyClass obj=new MyClass(); //2.然后才能使用没有static关键字的方法 obj.method(); //对于静态方法来说,可以通过对象名进行调用,也可以通过类名称来调用。 obj.methodStatic(); //正确,不推荐,这种写法也会被javac翻译成“类名称.静态方法名” MyClass.methodStatic(); //正确,推荐 //对于本类当中的静态方法,可以省略类名称 myMethod(); Demo02StaticMethod.myMethod(); //完全等效 } public static void myMethod(){ System.out.println("自己的方法!"); } } public class MyClass { int num; //成员变量 static int numStatic; //静态变量 //成员方法 public void method(){ System.out.println("这是一个普通的成员方法。"); //成员方法可以访问成员变量 System.out.println(num); //成员方法可以访问静态变量 System.out.println(numStatic); } //静态方法 public static void methodStatic(){ System.out.println("这是一个普通的静态方法。"); //静态方法可以访问静态变量 System.out.println(numStatic); //静态不能直接访问非静态【重点】 //System.out.println(num); //错误写法 //静态方法中不能使用this关键字 //System.out.println(this); //错误写法 } }
(학습영상 추천 : java 강좌)
3. static static code block
형식 :
public class 类名称{ static{ //静态代码块的内容 } }
특징 : 이 클래스를 처음 사용할 때 static 코드 블록은 한 번만 실행됩니다. 프로그램 성능을 최적화하는 데 사용할 수 있습니다. 대부분의 경우 구성 파일 로드 등과 같이 정적 코드 블록에서 한 번만 수행되는 일부 초기화 작업(정적 리소스 초기화) 코드를 배치합니다. 참고: 정적 콘텐츠는 항상 비정적 콘텐츠보다 우선하므로 정적 코드 블록은 생성자보다 먼저 실행됩니다.
public class Demo04StaticCode { public static void main(String[] args) { Person one=new Person(); System.out.println("************************"); //无论创建几个Person对象,静态代码块只执行一次 Person two=new Person(); } } public class Person { static{ System.out.println("静态代码块执行!"); } public Person() { System.out.println("构造方法执行!"); } }
실행 결과:
위 내용은 static 키워드의 세 가지 주요 기능의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!