>Java >java지도 시간 >C++와 Java의 static 키워드에 대한 간단한 비교

C++와 Java의 static 키워드에 대한 간단한 비교

青灯夜游
青灯夜游원래의
2019-03-14 14:21:232980검색

Static 키워드는 C++과 Java에서 거의 동일한 목적으로 사용되지만 여전히 약간의 차이점이 있습니다. 다음 기사에서는 C++와 Java의 static 키워드의 유사점과 차이점을 설명합니다. 이것이 도움이 되기를 바랍니다.

C++와 Java의 static 키워드에 대한 간단한 비교

C++와 Java의 static 키워드 간의 유사점

1. 정적 데이터 멤버:

C++ 및 Java에서 정적 데이터 멤버는 클래스 멤버이며 공유되는 모든 객체 사이에 있습니다. 예를 들어, 다음 Java 프로그램에서는 정적 변수 count를 사용하여 생성된 개체 수를 계산합니다.

class Test { 
    static int count = 0; 
  
    Test() {  
       count++;  
    }     
    public static void main(String arr[]) { 
       Test t1 = new Test(); 
       Test t2 = new Test(); 
       System.out.println("共创建了" + count + " 个对象");         
    } 
}

출력:

共创建了2个对象

2. 정적 멤버 메서드

C++ 및 Java에서 static으로 선언된 메서드는 클래스 멤버이며 다음과 같은 제한 사항이 있습니다.

1). 예를 들어 다음 프로그램의 fun()은 비정적이지만 정적 main()에서 호출되므로 컴파일이 실패합니다.

class Main { 
    public static void main(String args[]) {    
        System.out.println(fun()); 
    }  
    int fun() { 
        return 20; 
    }  
}

2) 정적 데이터에만 액세스해야 합니다.

3) this 또는 super에 액세스할 수 없습니다. 예를 들어, 다음 프로그램은 컴파일할 때 실패합니다.

class Base { 
    static int x = 0;        
}    
  
class Derived extends Base  
{ 
   public static void fun() { 
       System.out.println(super.x); // 编译器错误:不能从静态上下文引用非静态变量
   }    
}

설명:

C++와 Java 모두 객체를 생성하지 않고도 정적 데이터 멤버와 정적 메서드에 액세스할 수 있습니다. 클래스 이름을 사용하여 액세스할 수 있습니다. 예를 들어, 다음 프로그램에서는 정적 데이터 멤버 개수와 정적 메서드 fun()에 객체 없이 액세스할 수 있습니다.

class Test { 
    static int count = 0; 
    public static void fun() {  
       System.out.println("调用了静态方法fun()");  
    }     
}    
       
class Main 
{ 
    public static void main(String arr[]) { 
       System.out.println("Test.count = " + Test.count);         
       Test.fun(); 
    } 
}

C++의 static 키워드와 Java

1. 정적 블록

C++과 달리 Java는 정적 블록(정적 하위 블록이라고도 함) 문이라는 특수 블록을 지원합니다. 클래스의 정적 초기화에 사용할 수 있습니다. 정적 블록 내의 이 코드는 한 번만 실행됩니다.

2. 정적 지역 변수

C++와 달리 Java는 정적 지역 변수를 지원하지 않습니다. 예를 들어, 다음 Java 프로그램은 컴파일할 때 실패합니다.

class Test { 
   public static void main(String args[]) {  
     System.out.println(fun()); 
   }  
   static int fun()  { 
     static int x= 10; //编译器错误:不允许静态局部变量
     return x--; 
   } 
}

추천 동영상 튜토리얼: "Java Tutorial", "C++ Tutorial"

위는 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되기를 바랍니다. 더 흥미로운 내용을 보려면 PHP 중국어 웹사이트의 관련 튜토리얼 열을 주의 깊게 살펴보세요! ! !

위 내용은 C++와 Java의 static 키워드에 대한 간단한 비교의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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