声明后初始化数组

时间:2019-03-26 20:15:31

标签: java

我刚刚在Java类中开始学习Arrays,但是似乎有一个基本概念我无法掌握。从课本中获取以下示例代码:

public class DeckOfCards {

     public static void main(String[] args) {
         int[] deck = new int[52];
         String[] suits = {"Spades", "Hearts", "Diamonds", "Clubs"};
         String[] ranks = {"Ace", "2", "3", "4", "5", "6", "7", "8", "9",
                           "10", "Jack", "Queen", "King"};    
         // Initialize the cards
        for (int i = 0; i < deck.length; i++)           //Line 9
             deck[i] = i;

         // Shuffle the cards
        for (int i = 0; i < deck.length; i++) {
             int index = (int)(Math.random() * deck.length); int temp = deck[i];
             deck[i] = deck[index];
             deck[index] = temp; 
        }
    }
}

在第9行中,在“初始化卡片”的注释下,有人可以向我确切说明此目的吗?做什么用行来初始化第3行中的'52'牌组不是?

任何上下文都会有很大帮助。谢谢。

4 个答案:

答案 0 :(得分:3)

在运行第9行和第10行之前,char GPSLatBuf[12], GPSLonBuf[12]; int parseGPSData(char * gpsBuffer) { char * p; char gpsQuality = '0'; if((p = strstr(gpsBuffer, "$GPGGA")) == NULL) return -1; memset(GPSLatBuf, 0, sizeof(GPSLatBuf)); memset(GPSLonBuf, 0, sizeof(GPSLonBuf)); p += 7; // UTC time if(*p != ',') { p += 10; // Latitude if(*p != ',') { memcpy(&GPSLatBuf[1], p, 9); p += 10; // N/S Hemisphere if(*p != ',') { GPSLatBuf[0] = (*p == 'N') ? '+' : '-'; p += 2; // Longitude if(*p != ',') { memcpy(&GPSLonBuf[1], p, 10); p += 11; // E/W Hemisphere if(*p != ',') { GPSLonBuf[0] = (*p == 'E') ? '+' : '-'; p += 2; // GPS quality if(*p != ',') gpsQuality = *p; } } } } } if(gpsQuality == '0') return -1; return 0; } 如下所示:

deck

在运行第9行和第10行之后,{0, 0, 0, ... 0} 如下所示:

deck

这不是Java中形式化的“初始化”内容-在这种情况下,数组在第3行声明时被初始化,每个值都设置为0。

答案 1 :(得分:1)

第9行声明一个循环 for(计数器变量;保持循环运行的条件;递增计数器) int i = 0将值0声明为变量i; i < deck.length意味着大括号内的代码将一次又一次地运行,直到先前声明的变量 i 小于deck.length为止;并且i++将在每次迭代后被调用

第3行只是声明一个具有52个空位置的数组

答案 2 :(得分:1)

所以deck.length为52,这意味着for循环将执行52次,而i的值将在每个循环中增加1。

In 1st go value of i =0
Line 10 : deck[i] = i;
deck[0] = i;
set value at 0 index of deck = 0;


In 2nd run value of i = 1
Line 10 : deck[i] = i;
deck[1] = i;
set value at 1 index of deck = 1;

以此类推。

答案 3 :(得分:0)

第9行称为for statement。它是大多数编程语言中都流行的循环构造。其目的之一是用更少的代码执行重复性任务。

第9行和第10行共同等效于以下52行代码:

deck[0] = 0;
deck[1] = 1;
deck[2] = 2;
...
deck[51] = 51;

详细了解Java docsfor语句的工作原理。