import java.util.*;
public class DisplayDeck {
public static void main(String[] args) {
Deck deck = new Deck();
for (int suit = Card.DIAMONDS; suit <= Card.SPADES; suit++) {
for (int rank = Card.ACE; rank <= Card.KING; rank++) {
Card card = deck.getCard(suit, rank);
System.out.format("%s of %s%n",
card.rankToString(card.getRank()),
card.suitToString(card.getSuit()));
}
}
}
}
这
Deck deck = new Deck();
我可以理解它正在尝试使用对象层实例化类Deck。但是谈到
Card card = deck.getCard(suit, rank);
其中Card是一个类,没有与它关联的new
运算符,但它等同于其他东西,尽管LHS似乎更像是实例化类卡。
答案 0 :(得分:0)
您应该查看Deck
课程,了解deck.getCard(suit,rank)
的作用。它可能要么创建一个新的Card
实例(使用new
),要么检索对Card
实例中存储的现有Deck
实例的引用。
答案 1 :(得分:0)
getCard
类中有Deck
个方法,它接受 suit 和 rank 参数(整数),然后以某种方式接受某种logic返回Card
类的实例。
答案 2 :(得分:0)
看起来令人困惑的是分配对象引用的概念。有关详细说明,请参阅this link。
&#34; LHS&#34;您引用的(Card card
)是赋值语句的左侧。右侧是一个方法调用,它返回一个对象引用(然后该方法返回的引用被赋值给左侧的变量card
)。方法(getCard()
)可能会创建其返回引用的对象,但看起来更像是Card对象可能由Deck()
构造函数创建,并且可能存储在某种Map中以供查找。每次调用getCard()
时创建一个新的Card对象都是低效的。
答案 3 :(得分:-1)
DIAMONDS等常量(public static final int DIAMONDS = 1; // or similar
)在Card类中定义。由于它们是静态的,即使没有卡的实例也存在。