Java static 키워드 상세 설명 및 사용법 요약

6091 단어 Javastatic
static은'전역'또는'정적'이라는 뜻을 나타내며 구성원 변수와 구성원을 수식하는 방법으로도 정적 static 코드 블록을 형성할 수 있지만 자바 언어에는 전역 변수의 개념이 없다.다음은 내용을 정리해서 참고하시면 됩니다.
1. 정적 방법
일반적으로, 한 클래스에서 하나의 방법을static로 정의합니다. 즉, 이 클래스의 대상이 필요하지 않으면 이 방법을 호출할 수 있습니다.
static으로 선언하는 방법에는 다음과 같은 몇 가지 제한이 있습니다.
그것들은 다른static 방법만 호출할 수 있다.
그것들은 static 데이터에만 접근할 수 있습니다.
그것들은 어떤 방식으로this나 슈퍼를 인용할 수 없다.

class Simple { 
  static void go() { 
   System.out.println("Welcome"); 
  } 
 } 
 public class Cal { 
  public static void main(String[] args) { 
   Simple.go(); 
 } 
 } 
정적 방법을 호출하는 것은 바로'클래스 이름. 방법 이름'이다. 정적 방법의 사용은 위와 같다.일반적으로 정적 방법은 응용 프로그램의 다른 클래스에 실용적인 도구를 제공하는 데 자주 사용되는데, Java 라이브러리에서 대량의 정적 방법은 바로 이러한 목적에서 정의된 것이다.
 2. 정적 변수
static로 성명된 변수는 실질적으로 전역 변수이다.하나의 대상을 설명할 때, static 변수의 복사가 발생하지 않고, 이 종류의 모든 실례 변수는 같은 static 변수를 공용합니다.정적 변수는 정적 방법과 유사하다.모든 이런 실례는 이 정적 변수를 공유한다. 즉, 클래스가 불러올 때 하나의 저장 공간만 분배하고 모든 이런 대상은 이 저장 공간을 조종할 수 있다. 물론final에 대해서는 별개이다.

class Value { 
  static int c = 0; 
   static void inc() { 
   c++; 
  } 
 } public class Count2 { 
  public static void prt(String s) { 
   System.out.print(s); 
  } 
 public static void main(String[] args) {   
  Value v1, v2; 
   v1 = new Value(); 
   v2 = new Value(); 
   prt("v1.c=" + v1.c + " v2.c=" + v2.c); 
   v1.inc(); 
   prt(" v1.c=" + v1.c + " v2.c=" + v2.c); 
  } 
 } 
결과: v1.c=0  v2.c=0 v1.c=1  v2.c=1
이로써 그들이 하나의 저장소를 공유한다는 것을 증명할 수 있다.static 변수는 C의 전역 변수와 약간 유사한 개념이다.
연구할 만한 것은 정적 변수의 초기화 문제다.
만약 계산을 통해 static 변수를 초기화할 필요가 있다면, static 블록을 설명할 수 있습니다. Static 블록은 이 클래스가 불러올 때만 실행됩니다.다음 예에서 보여준 클래스는 static 방법, static 변수, 그리고 static 초기화 블록이 있습니다.

class Value3 { 
  static int c = 0; 
   Value3() { 
   c = 15; 
  } 
   Value3(int i) { 
   c = i; 
  } 
   static void inc() { 
   c++; 
  } 
 } 
 public class Count { 
  public static void prt(String s) { 
   System.out.println(s); 
  } 
  Value3 v = new Value3(10); 
  static Value3 v1, v2; 
  static {// static  
   prt("v1.c=" + v1.c + " v2.c=" + v2.c); 
   v1 = new Value3(27); 
   prt("v1.c=" + v1.c + " v2.c=" + v2.c); 
   v2 = new Value3(15); 
   prt("v1.c=" + v1.c + " v2.c=" + v2.c); 
  } 
   public static void main(String[] args) { 
   Count ct = new Count(); 
   prt("ct.c=" + ct.v.c); 
   prt("v1.c=" + v1.c + " v2.c=" + v2.c); 
   v1.inc(); 
   prt("v1.c=" + v1.c + " v2.c=" + v2.c); 
   prt("ct.c=" + ct.v.c); 
  } 
 } 

결과: v1.c=0  v2.c=0
v1.c=27  v2.c=27
v1.c=15  v2.c=15
ct.c=10
v1.c=10  v2.c=10
v1.c=11  v2.c=11
ct.c=11
이 프로그램은 정적 초기화의 여러 가지 특성을 보여 준다.만약 네가 자바를 처음 만났다면, 결과는 너를 놀라게 할 것이다.static 뒤에 괄호를 높이는 것에 대해 곤혹스러울 수 있습니다.먼저 알려줄 것은static가 정의한 변수는 나타나는 순서가 어떻든지 간에 다른 비static 변수보다 우선한다는 것이다.프로그램에서 보여준 바와 같이 v1과 v2의 앞에 나타났지만 결과는 v1과 v2의 초기화가 v의 앞에 있었다.static {뒤에 코드를 따라갑니다. 이것은 현식 정적 변수 초기화에 사용됩니다. 이 코드는 한 번만 초기화되고 클래스가 처음 불러올 때입니다. 이 코드를 읽고 이해하면 static 키워드에 대한 인식을 도울 수 있습니다. 계승에 관련될 때 부류의static 변수를 먼저 초기화하고 그 다음에 부류의static 변수를 순서대로 유추합니다.
3. 정적 클래스
보통 하나의 일반 클래스는 정태적인 것으로 성명할 수 없고, 내부 클래스만 성명할 수 있다.이때 이 성명은 정적 내부 클래스로 일반 클래스로 사용할 수 있으며, 실례적인 외부 클래스는 필요 없다.

public class StaticCls { 
  public static void main(String[] args) { 
   OuterCls.InnerCls oi = new OuterCls.InnerCls(); 
  } 
 } 
 class OuterCls { 
 public static class InnerCls { 
   InnerCls() { 
    System.out.println("InnerCls"); 
   } 
  } 
 } 
결과: InnerCls
4. static과final을 함께 사용하여 무엇을 나타냅니까
staticfinal은 구성원 변수와 구성원을 수식하는 방법으로'전역 상량'으로 간단하게 이해할 수 있습니다!
변수에 대해서는 값을 주면 수정할 수 없고 클래스 이름을 통해 접근할 수 있음을 나타낸다.
방법에 대해 덮어쓸 수 없고 클래스 이름을 통해 직접 접근할 수 있음을 나타낸다.
 5.보충:
static은'전역'또는'정적'이라는 뜻을 나타내며 구성원 변수와 구성원을 수식하는 방법으로도 정적 static 코드 블록을 형성할 수 있지만 자바 언어에는 전역 변수의 개념이 없다.
static에 의해 수식된 구성원 변수와 구성원 방법은 이 종류의 모든 대상에 독립적입니다.즉, 그것은 클래스의 특정한 실례에 의존하지 않고 클래스의 모든 실례에 의해 공유된다.이 클래스가 불러오기만 하면 Java 가상 컴퓨터는 클래스가 실행될 때 데이터 구역의 방법 구역에 따라 그들을 찾을 수 있다.따라서 static 대상은 그 어떠한 대상이 만들어지기 전에 접근할 수 있으며 그 어떠한 대상도 인용할 필요가 없다.public로 수식된 static 구성원 변수와 구성원 방법의 본질은 전역 변수와 전역 방법이다. 클래스의 대상을 설명할 때 static 변수의 사본을 생성하지 않고 클래스의 모든 실례가 같은 static 변수를 공유한다.
static 변수 앞에는 private 수식이 있을 수 있습니다. 이 변수는 클래스의 정적 코드 블록이나 클래스의 다른 정적 구성원 방법에서 사용할 수 있음을 나타냅니다. (물론 비정적 구성원 방법에서도 사용할 수 있습니다. - 쓸데없는 말) 다른 클래스에서 클래스 이름을 통해 직접 인용할 수 없다는 점이 중요합니다.실제적으로private는 접근 권한이 한정되어 있으며,static는 실례화하지 않으면 사용할 수 있다는 것을 알아야 한다. 그러면 훨씬 이해하기 쉽다.static 앞에 다른 접근 권한 키워드를 추가하는 효과도 이와 같다.
static 수식의 구성원 변수와 구성원 방법은 습관적으로 정적 변수와 정적 방법이라고 하는데 클래스 이름을 통해 직접 접근할 수 있고 접근 문법은 다음과 같다.
유명정적 메서드 이름(매개변수 목록...)
유명정적 변수 이름
static로 수식된 코드 블록은 정적 코드 블록을 나타내고 자바 가상 머신(JVM)이 클래스를 불러올 때 이 코드 블록을 실행합니다.
static 변수:
정적 여부에 따라 클래스 구성원 변수를 분류하면 두 가지로 나눌 수 있다. 하나는static에 의해 수식된 변수로 정적 변수나 클래스 변수라고 한다.다른 하나는static에 수식되지 않은 변수입니다. 실례 변수라고 합니다.
두 가지 차이점은 다음과 같습니다.
정적 변수가 메모리에 하나의 복사본만 있는 경우(메모리 절약), JVM 정적 변수에 한 번만 메모리를 분배하고, 클래스를 불러오는 과정에서 정적 변수의 메모리 분배를 완성하며, 클래스 이름으로 직접 접근할 수 있으며, 물론 대상을 통해 접근할 수도 있다(단, 이것은 추천하지 않는다).
실례 변수에 대해 실례를 만들지 않으면 실례 변수에 메모리를 한 번 분배하고 실례 변수는 메모리에 여러 개의 복사본을 가지고 서로 영향을 주지 않는다(유연성).
static 방법
정적 방법은 클래스 이름을 통해 직접 호출할 수 있고 그 어떠한 실례도 호출할 수 있기 때문에 정적 방법에서this와 슈퍼 키워드를 사용할 수 없으며 소속 클래스의 실례 변수와 실례 방법(즉 static이 없는 구성원 변수와 구성원 방법)을 직접 방문할 수 없으며 소속 클래스의 정적 구성원 변수와 구성원 방법만 접근할 수 있다.인스턴스 멤버가 특정 객체와 연관되어 있기 때문입니다!이것은 이해해야 한다. 그 속의 이치를 이해하려면 기억이 아니다!!!
static 방법은 어떠한 실례에도 독립되어 있기 때문에static 방법은 반드시 실현되어야 하며 추상적인 abstract가 될 수 없다.
본고에서 기술한 내용은 필요한 친구에게 도움이 되기를 바란다

좋은 웹페이지 즐겨찾기