> Java > Java시작하기 > 본문

static 키워드의 세 가지 주요 기능

王林
풀어 주다: 2020-08-19 17:07:03
앞으로
3492명이 탐색했습니다.

static 키워드의 세 가지 주요 기능

정적 키워드의 세 가지 주요 기능:

(권장 튜토리얼: 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 키워드의 세 가지 주요 기능

위 내용은 static 키워드의 세 가지 주요 기능의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:csdn.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿