簡體   English   中英

為什么我的數組(5個元素)動態更改大小?

[英]Why is my array (5 elements) changing size dynamically?

我已經聲明了一個String數組。

String[] csvColumns = new String[5];

但是,從CSV文件讀取時:

     String[] csvColumns = new String[5];  // Explicitly including this declaration again in case Stack Overflow users need to see the scope of the variable.
     String row;  // Will receive each column of 1 line at a time of the CSV file.
     while ((row = inFile.readLine()) != null)  // BufferedReader used to parse CSV File.
        {
        csvColumns = row.split(",");  // Each element of the array will recieve the value of each column.
        // Initialise class attributes with each column.
        }

如果CSV文件行中的一列不包含任何值(在我的文件中,最后一列只能是這種情況,因為該列不是必需的並且包含有關特定問題的注釋),則csvColumns會減少它的大小乘以1。如果使用數組,我看不到這是怎么可能的-但話又說回來,我是一個新手程序員。

為什么會發生這種情況?

編輯*由於這兩個答案,非常有幫助。 應該檢查了split方法的返回類型! (謝謝@chrylis)。

首先, csvColumns不是靜態的(它似乎是一個局部變量),其次,它是一個變量 ,而不是數組。 您正在將值(數組引用)重新分配為對split返回的新數組的引用。 (您創建並從未使用過的舊String[5]現在沒有指向它的東西,將被垃圾回收。)

數組不會改變其大小。 您只需通過此行創建一個新數組

csvColumns = row.split(",")

並將其分配給csvColumns變量。

而且舊的new String[5]數組將被垃圾回收,因為它不再被任何變量引用。

你可以改變

String[] csvColumns = new String[5];

String[] csvColumns = null;

而且您的代碼仍然可以使用,因為您從未使用過創建的數組。 您只使用variable

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM