>  기사  >  Java  >  Java의 정적 메소드와 비정적 메소드의 차이점은 무엇입니까?

Java의 정적 메소드와 비정적 메소드의 차이점은 무엇입니까?

青灯夜游
青灯夜游원래의
2021-05-07 14:23:2429022검색

차이점: 1. 정적 메서드는 static 키워드로 수정된 메서드로, 개체가 아닌 클래스에 속합니다. 비정적 메서드는 static 키워드로 수정되지 않고 클래스가 아닌 개체에 속하는 일반 메서드입니다. 2. 정적 메서드는 직접 호출할 수 있으며, 클래스 이름 호출과 개체 호출은 개체를 통해서만 호출할 수 있습니다. 3. 다양한 수명주기.

Java의 정적 메소드와 비정적 메소드의 차이점은 무엇입니까?

이 튜토리얼의 운영 환경: windows7 시스템, java8 버전, DELL G3 컴퓨터.

1. 정적 메서드와 비정적 메서드의 차이점(호출 객체와 참조 변수가 다름)

정적 메서드: static 키워드로 수정된 메서드로, 클래스 메서드라고도 합니다. 객체가 아닌 클래스입니다. 객체를 인스턴스화하기 전에 클래스 이름과 메서드 이름을 통해 정적 메서드를 호출할 수 있습니다. (정적 속성과 정적 메서드는 클래스에 속하며 클래스 이름을 통해 직접 호출할 수 있습니다.)

A. 정적 메서드에서는 정적 메서드를 호출할 수 있습니다.

B. 정적 메서드에서는 비정적 메서드를 호출할 수 없습니다.

C. 정적 메서드에서는 클래스 변수(즉, 정적 수정 변수)를 참조할 수 있습니다.

D. 정적 메서드에서는 멤버 변수를 참조할 수 없습니다(즉, 정적 수정이 없는 변수).

E. 정적 메소드에서는 super 및 this 키워드를 사용할 수 없습니다.

비정적 메소드: 정적 키워드 수정이 포함되지 않은 일반적인 메소드로 인스턴스 메소드 및 멤버 메소드라고도 합니다. 클래스가 아닌 객체에 속합니다. (멤버 속성과 멤버 메소드는 객체에 속하며 new 키워드를 통해 생성한 후 객체를 통해 호출해야 합니다.)

A. 일반 메소드에서는 일반 메소드를 호출할 수 있습니다.

B. 일반 메서드에서는 정적 메서드를 호출할 수 있습니다.

C. 일반 메서드에서는 클래스 변수와 멤버 변수를 참조할 수 있습니다.

D 일반 메서드에서는 super 및 this 키워드를 사용할 수 있습니다. 2. 정적 메서드와 비정적 메서드의 차이점(다른 호출 메서드)

정적 메서드는 클래스 이름 호출, 개체 호출로 직접 호출할 수 있습니다. (클래스명. 메소드명 / 객체명. 메소드명)

하지만 비정적 메소드는 객체를 통해서만 호출할 수 있습니다. (객체 이름. 메소드 이름)

3. 정적 메소드와 비정적 메소드의 차이점(수명주기가 다름)

정적 메소드의 수명주기는 해당 클래스의 정적 메소드와 정적 변수의 길이만큼 깁니다. 클래스가 정의되고 메모리에 로드됨에 따라 성장합니다. 정적 속성과 메서드는 스레드가 끝날 때까지 삭제되지 않습니다. (즉, 정적 메서드는 클래스에 속합니다.)

비정적 메서드의 수명 주기는 클래스의 인스턴스화된 개체만큼 길지만, 클래스가 개체를 인스턴스화할 때만 비정적 메서드가 생성되며, 객체가 소멸되고, 비정적 메서드도 즉시 소멸됩니다. (즉, 비정적 메소드는 객체에 속합니다)

요약: 클래스 메소드는 클래스 이름을 통해 직접 호출할 수 있으며, 인스턴스 메소드는 먼저 클래스를 인스턴스화한 다음 객체를 초기화한 다음 클래스의 인스턴스 객체를 통해 호출해야 합니다. class

예:

class XYZ{
public static void main(String[] str){
     XYZ.testStatic();         //直接通过类调用

     XYZ a = new XYZ();        //实例化,然后构造方法会初始化
     a.testMethod();           //对象调用方法
}

public static void testStatic(){
System.out.println("This is static method");
}

public void testMethod(){
System.out.println("This is instance method");
}
}

static 정적 변수/메서드는 클래스 로딩 과정에서 초기화되고 메모리에만 존재하므로 전역 변수/메서드로 간주할 수 있습니다.

관련 비디오 튜토리얼 권장 사항:

Java 비디오 튜토리얼

위 내용은 Java의 정적 메소드와 비정적 메소드의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.