2015-12-27 38 views
-1
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(); 

我可以理解,它試圖將類實例甲板與對象甲板。但是,當涉及到

Card card = deck.getCard(suit, rank); 

,其中卡是一類,有沒有與之相關的new運營商,但它等同於別的東西,雖然LHS似乎更像實例化類卡。

回答

0

你應該看看Deck類,看看deck.getCard(suit,rank)做什麼。它可能會創建一個新的Card實例(使用new)或檢索存儲在Deck實例中的現有Card實例的引用。

0

有一個在Deck類,接受西裝排名參數(整數),然後以某種方式與某種邏輯返回Card類的實例getCard方法。

-1

DIAMONDS等是Card類中定義的常量(public static final int DIAMONDS = 1; // or similar)。由於它們是靜態的,即使沒有卡的實例,它們也在那裏。

0

看起來像什麼讓你感到困惑的是對象引用賦值的概念。有關詳細說明,請參見this link

您引用的「LHS」(Card card)是賦值語句的左側。右側是一個方法調用,它返回一個對象引用(然後,方法返回的引用被分配給左側的變量card)。方法(getCard())可能會創建它返回引用的對象,但它看起來更像是Card對象可能是由Deck()構造函數創建的,並且可能存儲在某種Map中以供查找。每次調用getCard()時創建一個新的Card對象效率不高。