-1

パラメータを使用する場合、クラス内にメソッドを作成する場合:

public String Method(ClassName NewObject){}

または以下の私の例では:

public String EqualsTo(Deck aCard){}

そのメソッド内にそのクラスの新しいオブジェクトを作成しますか?誰かが私がそのパラメータで何が起こっているのかを説明しても構わないとしたら?

注:これは完全なクラスではないため、質問をより適切に理解するためにこれを作成したため、マイナーな構文エラーは無視してください。

import java.util.Scanner;
import java.util.Random;

public class Deck {
private int suit;
private int rank;
private Random generator = new Random();
Scanner in = new Scanner(System.in);

    //Default constructor
    public Deck() {
    suit = suit.random(4);
    rank = rank.random(13);
    }


public String EqualsTo(Deck aCard){}
}
4

4 に答える 4

1

基本的なこと:Javaは価値によって渡されます。

  1. 新しいオブジェクトは作成されません。
  2. 呼び出し元エンティティによって作成されたオブジェクト参照値は、メソッド引数にコピーされますaCard
  3. このオブジェクトに対して行われた変更は、呼び出し元のエンティティに引き続き表示されます。これは、参照値がオブジェクトの同じアドレス位置を指しているためです。

これが例です。

public class Test2 {

    public int bla;

    public static void main(String[] args) {
        Test2 test = new Test2();
        test.bla = 878;
        test.doSome(test); // Calling Location
        System.out.println(test.bla);
    }

    public void doSome(Test2 test) {
        test.bla = 95;
    }
}
于 2013-02-12T03:34:24.650 に答える
1

newキーワードを使用すると、オブジェクトが作成されます。一方、メソッドを次のように宣言する場合

public String EqualsTo(Deck aCard){}

これは、EqualsTo()メソッドがパラメーターとしてDeck 参照を受け取ることを示しています。メソッドを使用するには、Deckオブジェクトを作成し、そのオブジェクトへの参照を保持する必要があります。次に、メソッドへの参照を送信します。

于 2013-02-12T03:21:03.330 に答える
1

そのパラメータは、そのタイプのオブジェクトのプレースホルダーとして機能します。実際には作成されない、メソッドシグネチャは次のように述べています。

  1. 私はEqualsTo()メソッドでありDeck、パラメーターとしてインスタンス/オブジェクトのタイプを取得/要求します。

  2. String結果としてを返します。

ちなみに、EqualsToメソッドの「String」の代わりにブール値を戻り型として使用することをお勧めします。

于 2013-02-12T03:21:20.067 に答える
1

いいえ

public String EqualsTo(Deck aCard){}

呼び出されたときに新しいオブジェクトを作成しません。

ここでオブジェクトが作成されます。使用事例

Deck deck1 = new Deck(); // NEW OBJECT CREATED
Deck deck2 = new Deck(); // NEW OBJECT CREATED

String result = deck1.EqualsTo(deck2); // NO NEW OBJECT CREATED, 
                                     // JUST PASSED REFERENCE OF EXISTING OBJECT
                                     // (except the result of course, which is probably a new object)
于 2013-02-12T03:46:35.520 に答える