1

私が取り組んでいるコードがいくつかあります。基本的には、ユーザー入力を受け取り、有向グラフを作成します。1 人は一方通行、もう 1 人は反対方向に移動できます。出力は、訪問できる場所の重複です。

ほとんどすべてが思い通りに機能していますが、私が持っている static の使用に関心があります。私はそれを完全に理解していないようで、どこを見ても、その正確な使用法やそれを取り除く方法を見つけることができません.

誰かが静的とは何か、なぜそれが役立つのかを理解するのを手伝ってくれませんか?

また、ほとんどのコードを MAIN からヘルパー メソッドに移動した方がよいでしょうか? これを行う場合、すべての変数をメインからクラスのトップに移動する必要があり、それらはすべて静的として宣言する必要がありますか?!

4

4 に答える 4

3

すべてが静的でなければならない理由は、オブジェクトを作成していないためです。メイン メソッドで new を呼び出してオブジェクトを作成する場合、そのオブジェクトで非静的変数を使用できます。これは、オブジェクト指向設計を使用する理由についてのチュートリアルを提供するのに適した場所ではありません。それらの 1 つをオンラインで読むことができます (上記のコメント投稿者が参照の可能性を示しました)。しかし、すべてが静的でなければならない理由は、java では常に静的である main メソッドからすべてが実行されているためです。どこかで new を呼び出す場合は、非静的変数を使用できます。

于 2013-04-11T23:21:55.973 に答える
1

多くの静的メソッド (findNodeInList など) はすべて、ArrayList (マップを表す) を最初の引数として取っているようです。したがって、静的にする代わりに、ノードのリストを格納し、それらにメソッドを持つクラス Map を使用できます。その後、main メソッドは入力を読み取りますが、ノードを直接管理する必要はありません。例えば:

class Map {
  ArrayList<Node> nodes;
  public void addNode(Node n) { nodes.add(n); }
  public int findNodeInList(String s) { ... }
  ...
  public static void main(String[] args) {
    Map peggyMap = new Map();
    Map samMap = new Map();
    // Read the data
    samMap.add(new Node(...));
  }
}

これにより、ノード/マップに関係するすべてのものが適切にカプセル化され、データの読み取りに関係するものと混ざりません。

于 2013-04-11T23:30:07.507 に答える
1

Static は、クラスのすべてのインスタンスがメソッドまたは変数にアクセスできるようにします。これは定数のようなものですが、クラス用です。いくつかのコードを理解しやすくするために、次の作業を行います。

public class Example {
  public static int numero;
}

public class Implementation {

  public static void main (String args[]) {
    Example ex1 = new Example();
    Example ex2 = new Example();
    Example.numero=10;
    System.out.println("Value for instance 1 is: " + ex1.numero);
    System.out.println("Value for instance 2 is: " + ex2.numero);
  }
}

次のコードを実行すると、次のように出力されます。

インスタンス 1 の値: 10 インスタンス 2 の値: 10

静的変数 numero (イタリア語の数字) を 10 に設定したためです。

とった?

于 2013-04-11T23:24:56.913 に答える
0

静的は、プログラム全体でクラス/メソッドを使用する予定で、そのメソッドを使用する必要があるたびにインスタンスを作成する必要がない場合に役立ちます。

例えば

public class StaticExample {

  public static void reusable() {
  //code here
  }
}

こんな感じで使えるということです

StaticExample.reusable();

このようなインスタンスを作成する必要はありません

StaticExample staticExample = new StaticExample();

staticExample.reuseable();

これが、静的を使用するかどうかを決定するのに役立つことを願っています。

于 2013-04-11T23:21:47.753 に答える