我刚刚开始学习Java - 我的学习资源是:Deitel Java:如何编程。为什么这个数组构造了两次?
请看看这段代码:
1 public class DeckOfCards
2 {
3 private Card[] deck; // array of Card objects
4 private int currentCard; // index of next Card to be dealt (0-51)
5 private static final int NUMBER_OF_CARDS = 52; // constant # of Cards
6 // random number generator
7 private static final Random randomNumbers = new Random();
8
9 // constructor fills deck of Cards
10 public DeckOfCards()
11 {
12 String[] faces = { "Ace", "Deuce", "Three", "Four", "Five", "Six",
13 "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King" };
14 String[] suits = { "Hearts", "Diamonds", "Clubs", "Spades" };
15
16 deck = new Card[ NUMBER_OF_CARDS ]; // create array of Card objects
17 currentCard = 0; // set currentCard so first Card dealt is deck[ 0 ]
18
19 // populate deck with Card objects
20 for (int count = 0; count < deck.length; count++)
21 deck[ count ] =
22 new Card(faces[ count % 13 ], suits[ count/13 ]);
23 } // end DeckOfCards constructor
我的问题是,我不明白为什么程序构造平台阵列的两倍?
第一次(第16行),它可以像程序描述的那样(创建卡对象数组),但为什么第二次(第21-22行)?将不是一个程序员只需使用此表达式,而不使用new
,像这样:
deck[ count ] = Card(faces[ count % 13 ], suits[ count/13 ]);
,这是如果需要,卡类:
public class Card
{
private String face; // face of card ("Ace", "Deuce", ...)
private String suit; // suit of card ("Hearts", "Diamonds", ...)
// two-argument constructor initializes card's face and suit
public Card(String cardFace, String cardSuit)
{
face = cardFace; // initialize face of card
suit = cardSuit; // initialize suit of card
} // end two-argument Card constructor
// return String representation of Card
public String toString()
{
return face + " of " + suit;
} // end method toString
} // end class Card
为什么e,利用 “新” ??? – 2015-04-02 21:55:33
他使用new来创建一个Card对象,这就是你如何创建一个对象。他将这个新的Card对象分配给数组的一个单元格。 – Alboz 2015-04-02 21:55:48