Static 키워드는 C++과 Java에서 거의 동일한 목적으로 사용되지만 여전히 약간의 차이점이 있습니다. 다음 기사에서는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!