>  기사  >  Java  >  자바의 static 키워드 소개

자바의 static 키워드 소개

巴扎黑
巴扎黑원래의
2016-12-05 10:50:381054검색

Static 정적은 클래스 속성, 메서드 및 코드 블록을 수정하는 데 사용할 수 있습니다.

클래스를 만들 때 해당 클래스 개체의 모양과 동작을 설명합니다. 해당 클래스의 객체를 생성하는 것이 새로운 것이 아니라면 실제로 어떤 객체도 얻을 수 없습니다. 객체를 생성하기 위해 new를 실행해야만 데이터 저장 공간이 할당되고 해당 메소드를 호출할 수 있다.
새로운 객체 방식으로 해결할 수 없는 두 가지 상황이 있습니다.
1. 단지 특정 도메인에 별도의 저장 공간을 할당하고 싶다면, 얼마나 많은 객체를 생성할지 고민할 필요도 없고, 심지어 객체를 생성할 필요도 없습니다.
2. 특정 메소드가 해당 메소드를 갖는 클래스의 객체와 연관되지 않기를 바랍니다.
즉, 이 메소드를 호출하기 위해 객체를 생성할 필요가 없습니다. 이때 static 키워드를 사용하여 해결할 수 있습니다.

객체를 정적으로 선언한다는 것은 이 필드 또는 이 메서드가 해당 클래스의 어떤 객체와도 연결되지 않음을 의미합니다. 따라서 이 클래스의 객체를 생성하지 않고도 정적 메서드를 호출하거나 정적 필드에 액세스할 수 있습니다.

정적 속성[클래스 속성]: 이 클래스의 모든 개체가 공유하는 속성으로, 메모리 공간의 일부만 차지합니다.
예:

Java 코드

 public class one{  
     static i=10;  
}

이제 두 개의 One 객체를 다시 생성하더라도 one.i는 저장 공간이 하나 뿐이고 이 두 객체는 ​​이 i를 동시에 공유하게 됩니다

Java 코드

one a1=new one();  
    one a2=new one();

여기서 a1과 a2는 모두 동일한 저장 공간을 가리키므로 그 값은 모두 10입니다.

정적 메서드 [클래스 메서드]: 클래스 메소드는 더 이상 this 및 super를 사용하여 객체를 나타낼 수 없습니다.
클래스 메소드가 상위 클래스를 호출하는지 또는 하위 클래스에 의해 재정의되는지 여부는 클래스 이름에만 관련됩니다.
예:

Java 코드

public class two{  
     static void jia(){  
      one.i++;  
}

이제 이 두 가지 jia() 메소드는 ++ 연산자를 통해 정적 데이터 i를 증가시킵니다.
일반적인 새 개체를 사용하여 호출할 수 있습니다.

Java 코드

two t=new two();  
  t.jia();

이 메서드는 정적이므로 다음과 같이 직접 호출할 수 있습니다.

Java 코드

two.one();

정적 메소드의 중요한 사용법은 객체를 생성하지 않고도 호출할 수 있다는 것입니다.

정적 코드 블록: 정적 코드 블록이라고도 하며 클래스 멤버와 독립적인 클래스의 정적 문 블록입니다. 여러 개가 있을 수 있으며 어떤 메서드 본문에도 배치될 수 없습니다. JVM이 클래스를 로드할 때 이러한 정적 코드 블록이 실행됩니다. 정적 코드 블록이 여러 개인 경우 JVM은 클래스에 작성된 순서대로 이를 실행하며 각 코드 블록은 한 번만 실행됩니다.
예:

Java 코드

  public class dome{  
  static {  
        System.out.print("A");  
    }  
static {  
        System.out.print("B");  
    }  
static {  
        System.out.print("C");  
    }  
  public static void main(String[] args) {  
    System.out.print("E");  
  
    }  
  
}


실행 결과
ABCE


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