在方法参数中创建对象

时间:2013-02-12 03:17:30

标签: java

如果使用参数:

,则在类中创建方法时

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 个答案:

答案 0 :(得分:1)

使用new关键字时会创建对象。另一方面,当您将方法声明为

public String EqualsTo(Deck aCard){}

它表示EqualsTo()方法将Deck 引用作为参数。要使用该方法,您需要创建一个Deck对象并保留对它的引用。然后发送方法的引用。

答案 1 :(得分:1)

该参数充当该类型对象的占位符。它实际上并没有创建它,方法签名说:

  1. 我是EqualsTo()方法,我接受/要求Deck类型的实例/对象作为参数。

  2. 结果返回String

  3. 顺便说一句,我建议使用布尔值作为返回类型,而不是使用EqualsTo方法的'String'。

答案 2 :(得分:1)

基本的东西:Java是通过价值传递的。

  1. 未创建新对象。
  2. 调用实体创建的对象引用值将复制到方法参数aCard
  3. 对此对象所做的任何修改对于调用实体仍然可见。这是因为引用值指向对象的相同地址位置。
  4. 以下是一个例子。

    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;
        }
    }
    

答案 3 :(得分:1)

<强> NO

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)