3

コード例:

public class MyClass {

    public static double globallyVisibleDbl = 42.69;
    public static final int globallyVisibleInt = 42;
    //blah blah rest of code

}

クラス内には double 型の変数と定数があります。

しかし、これらの 2 つをクラスの外側に配置しようとすると、たとえば、クラスの前と import ステートメントの直後に配置しようとすると、#define token [value]ディレクティブのおかげで C または C++ で許可されているように、エラーが発生します。

import com.something.*;

public static double globallyVisibleDbl = 42.69;
public static final int globallyVisibleInt = 42;

public class MyClass {
   //some code
}

どうしてですか?

4

7 に答える 7

6

Javaには「グローバルスコープ」がないためです。すべての変数は、メソッドまたはクラス内で宣言する必要があります。クラス宣言の上で変数を宣言すると、同じファイルにあるという理由だけで、java はそれをクラスに関連付けません。

于 2013-07-08T13:06:09.343 に答える
3

Java の構文は、主に C++ から派生しています。構造化プログラミング、汎用プログラミング、およびオブジェクト指向プログラミングの構文を組み合わせた C++ とは異なり、Java はほとんどオブジェクト指向言語として構築されました。すべてのコードは class 内に記述され、パフォーマンス上の理由からクラスではないプリミティブ データ型 (整数、浮動小数点数、ブール値、および文字など) を除いて、すべてがオブジェクトです。

@See Java_syntax

于 2013-07-08T13:25:48.070 に答える
0

Java は OO 言語であり、許可されたグローバル変数はありません。 http://docs.oracle.com/javase/tutorial/java/javaOO/initial.html

于 2013-07-08T13:06:25.883 に答える
0

Java の世界では、すべての変数 (プロパティ) とメソッド (動作) はクラス内にある必要があります。

于 2013-07-08T13:07:38.560 に答える
0

Java では、クラスまたはインターフェース内にすべてのコードが必要です。次の方法でグローバル変数を宣言できます。

public class MyClass {
   public static double globallyVisibleDbl = 42.69;
   public static final int globallyVisibleInt = 42;
}

それらは、同じクラスローダーによってロードされたどこからでも参照できます。

于 2013-07-08T13:33:56.743 に答える
0

これを許可した場合、このコードは実行時にどこに置かれるでしょうか?

Java の仕組みは、すべてのオブジェクトがKlass静的情報を含むオブジェクトに接続されているというものです。グローバルな情報を許可した場合、その情報はどこに保存されるでしょうか? ある種のグローバル スコープ オブジェクトを作成することもできますが、あらゆる種類のものがスコープ内にあると非常に面倒になり、Java ランタイムは動的リンクを実行するときにこれらすべてのグローバル オブジェクトをチェックインする必要があります。

簡単な答え: 言語の設計に反します。

于 2013-07-08T13:09:10.363 に答える