Heim  >  Artikel  >  Java  >  Ein einfacher Vergleich des Schlüsselworts static in C++ und Java

Ein einfacher Vergleich des Schlüsselworts static in C++ und Java

青灯夜游
青灯夜游Original
2019-03-14 14:21:232947Durchsuche

Das Schlüsselwort „Static“ wird in C++ und Java für fast denselben Zweck verwendet, es gibt jedoch dennoch einige geringfügige Unterschiede. Der folgende Artikel führt Sie durch die Gemeinsamkeiten und Unterschiede des Schlüsselworts „static“ in C++ und Java. Ich hoffe, er ist hilfreich für Sie.

Ein einfacher Vergleich des Schlüsselworts static in C++ und Java

Ähnlichkeiten des Schlüsselworts static in C++ und Java

1 :

In C++ und Java sind statische Datenmitglieder Klassenmitglieder und werden von allen Objekten gemeinsam genutzt. Im folgenden Java-Programm wird beispielsweise die statische Variablenanzahl verwendet, um die Anzahl der erstellten Objekte zu zählen.

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 + " 个对象");         
    } 
}

Ausgabe:

共创建了2个对象

2. Statische Member-Methoden

In C++ und Java als statisch deklarierte Methoden sind Klassenmitglieder und unterliegen den folgenden Einschränkungen:

1), sie können nur andere statische Methoden aufrufen. Beispielsweise ist fun() im folgenden Programm nicht statisch, wird jedoch in statischem main() aufgerufen, sodass die Kompilierung fehlschlägt.

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

2). Es darf nur auf statische Daten zugegriffen werden.

3), kann nicht auf dieses oder super zugreifen. Das folgende Programm schlägt beispielsweise beim Kompilieren fehl.

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

Hinweis:

Sowohl C++ als auch Java können auf statische Datenelemente und statische Methoden zugreifen, ohne ein Objekt zu erstellen. Der Zugriff erfolgt über den Klassennamen. Im folgenden Programm kann beispielsweise ohne Objekt auf die Anzahl der statischen Datenelemente und die statische Methode fun() zugegriffen werden.

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(); 
    } 
}

Der Unterschied zwischen dem Schlüsselwort static in C++ und Java

1. Statischer Block

Im Gegensatz zu C++ unterstützt Java einen speziellen Block namens statischer Block (auch statische Klausel genannt), der für die statische Initialisierung einer Klasse verwendet werden kann; dieser Code innerhalb eines statischen Blocks wird nur einmal ausgeführt.

2. Statische lokale Variablen

Im Gegensatz zu C++ unterstützt Java keine statischen lokalen Variablen. Das folgende Java-Programm schlägt beispielsweise beim Kompilieren fehl.

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

Empfohlene Video-Tutorials: „Java-Tutorial“, „C++-Tutorial

Das Obige ist hoffentlich der gesamte Inhalt dieses Artikels Es kann für das Lernen aller hilfreich sein. Weitere spannende Inhalte finden Sie in den entsprechenden Tutorial-Kolumnen auf der chinesischen PHP-Website! ! !

Das obige ist der detaillierte Inhalt vonEin einfacher Vergleich des Schlüsselworts static in C++ und Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn