ホームページ > Java > &#&チュートリアル > C++ と Java の static キーワードの簡単な比較

C++ と Java の static キーワードの簡単な比較

青灯夜游
リリース: 2019-03-14 14:22:11
オリジナル
2956 人が閲覧しました

静的キーワードは、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 で静的として宣言されたメソッドはクラス メンバーであり、次の制限があります。

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 と Java の static キーワードの違い

##1. static ブロック # C とは異なり、Java はクラスの静的初期化に使用できる静的ブロック (静的句とも呼ばれる) と呼ばれる特別なブロックをサポートしており、静的ブロック内のこのコードは 1 回だけ実行されます。

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 チュートリアル

」、「C チュートリアル 上記がこの記事の全内容です。皆さんの勉強に役立つことを願っています。さらにエキサイティングなコンテンツについては、PHP 中国語 Web サイトの関連チュートリアルのコラムに注目してください。 ! !

以上がC++ と Java の static キーワードの簡単な比較の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート