2011-03-20 249 views
0

我只是詢問指令:的String [] []澄清

String[][] s = new String[2][2]; 

如果我創造這個變量「s」,將我創建2行2列字符串表? 或2個表格與2個元素? 感謝您的澄清。

+0

我將標記從android更改爲java。這是一個java問題,而不是一個特定於android的問題。 – 2011-03-20 00:36:23

回答

2

Java沒有內建數據類型,唯一的本地基本類型的類型(元類型?)是

  • 原始值(數字,字符和布爾)
  • 陣列(線性可轉位的集合相同類型的變量)。
  • 類的對象(基本上是指定類型的命名變量的集合,連同一些方法,由類固定)。 (字符串就是這樣的例子。)

其他的一切都必須由這些類型組成。 (使之複雜化的是,數組類型都被認爲是java.lang.Object的子類型,它是所有其他類繼承的類)。

因此,您可以擁有特定類的數組,其中包含數組類型作爲類變量(字段)和數組數組,如下所示。

您的String[][]類型由String數組的數組組成,new String[2][2]數組創建表達式創建一個長度爲2的數組,每個元素本身是一個長度爲2的數組。這些數組的每個元素可以是一個字符串,但在創建時它首先是null

s --> [ 0 , 1 ] 
     | '----> [ null, null ] 
     | 
     '---------> [ null, null ] 

現在,您可以把這些null S變量的地方實際String對象,如果你想通過使用s[0][1] = "Hello";和類似聲明。

正如其他答覆者所說的那樣,如果需要,這樣的2D數組可以被視爲具有行和列的表格,但是從語言的角度來看,這並不是什麼特別的。

1

您正在創建一個二維數組。這是一個數組數組。

+0

數組數組?所以最後我們將有一個4列和4行s [2] [2]的數組! 2個數組中包含2個數組! – androniennn 2011-03-20 01:12:57

1

這將在技術上建立一個數組 - 長度爲2的 - 串陣列的 - 也長度2.

的但對於所有的實際目的它可以爲具有2行和2列創建表被認爲。

+0

「長度2」是什麼意思? 2行2列?爲什麼不簡單地使用表?主要區別是什麼? – androniennn 2011-03-20 01:10:54

+0

問題是,在java中沒有內置的稱爲表的結構。所有存在的都是數組。一個數組就是你可以想象的只有一行的表,數組的長度就是它所具有的列的數量。 – 2011-03-20 14:59:23

+0

數組的長度是我想它的行數!不是它的專欄!沒有? – androniennn 2011-03-20 23:23:24

3

它創建一個二維數組和兩個維度的兩個元素。

根據變量的唯一目的和它實際擁有的數據,您可以自由地解釋整個任何你想要的方式。具有2列和2行的表(矩陣)非常好。

+0

請看我的第二個評論。 – androniennn 2011-03-20 00:46:29

+0

那麼爲什麼簡單地使用一張桌子!使用二維數組的主要目的是什麼? – androniennn 2011-03-20 01:14:21

+0

目的是爲了能夠使用兩個變量來引用特定數據。例如圖。第一個變量是x軸,第二個是y軸。或者當然只是一個有行/列的表格(更好的詞是矩陣或網格)。 – BalusC 2011-03-20 01:58:10

1

沒有表格。

有一個數組,數組只是對變量實際存儲的內存的引用。

它實際上將創建一個矩陣,該矩陣是一個陣列的每個元素是一個數組... 陣列的一個:[] [] 陣列中的兩個:[] []

+0

它是正確的解釋:http://leepoint.net/notes-java/data/arrays/arrays-2D.html? – androniennn 2011-03-20 01:15:33

1

這是一個二維數組。就像寫作

String [][] s = new String[2][]; 
s[0] = new String[2]; 
s[1] = new String[2]; 

所以我認爲你的選擇都是正確的。

2

我認爲你掛了哪個是一個真實的解釋

實際上,它們有很多正確的解釋或概念模型。哪一個是最合適/最有意義的取決於你在想的概念層面

  • 在語言/ JVM規範的層次上,您有一組字符串數組。

  • 在語法層面,您看起來像是一個二維數組的字符串,列和行。對於很多操作,它的行爲完全像二維陣列。 (你可以做一些事情讓你的String [] []不像傳統的二維數組那樣工作,例如,你可以替換一個行來給出一個「數組」,其中行的長度不同。只有當您「分配」整行時纔會發生。)

  • 在應用程序級別,您可以將其視爲表格...如果您想要。

您在一個評論中鏈接到的解釋是正確的,所有答案也是如此。他們都在說(或試圖說)同樣的事情。 (。順便說一句 - 這是@ BalusC的回答是說我只是在闡述)


所以,當你問:

如果我創造這個變量 「s」,我會創建一個2行2列的字符串表嗎?或2個表格與2個元素?

...答案是,這些都是這些,這取決於你的觀點,以及你的應用程序如何使用它們。從其他角度來看,它也是一串字符串數組,或者一個二維字符串數組。