-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. 它返回 aString作为结果。

顺便说一句,我建议使用布尔值作为 EqualsTo 方法的返回类型,而不是“字符串”。

于 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 回答