本文目錄一覽:
Java中數組對象的存儲位置?
原帖地址:
數組單一說在棧中還是堆中都是錯誤的,分為幾種情況:
1、固定數組在函數體內分配是在棧中的
我們做一個試驗,一般DELPHI程序線程的棧大小是1M,如果我們函數體中申請4M大小的數組,報棧溢出,則表示數據的大小是在棧中的。
const
CArrayCount = 1024*1024*4;
procedure TForm1.btnMainThreadClick(Sender: TObject);
var
MainThreadArray: array[1..CArrayCount] of Char;
i: Integer;
begin
for i := Low(MainThreadArray) to High(MainThreadArray) do
MainThreadArray[i] := #0;
end;
我把以上代碼在主線程中測試時,確實報了棧溢出,如果這時你把DELPHI程序的棧調大為6M則正確,表示在函數體中申請的數組是在棧中的。
2、固定數組在類中分配是在堆中的
我們在類中加一下定義語句
FFixArray: array[1..CArrayCount] of Char;
程序正常,表示在類中分配固定數組是在堆中的。
3、固定數組全局變數是在堆中的
我們在程序定義全部數組
GFixArray: array[1..CArrayCount] of Char;
程序也正常,表示全局固定長度是在堆中的。
3、動態數組不管在函數體中、類中、全局變數都是在堆中
如果你會彙編,看一下彙編就明白了。DELPHI這麼實現是合理的,在函數里中分配的固定長度數組放在棧中可以加快運行效率,而且在多線程的情況下,不用像堆分配有加鎖。只是大家在寫程序的過程中注意在函數里定義太長的數組需要注意,否則棧溢出,程序就崩潰了。
java中數組的定義
數組的定義
語法有兩種:
type arrayName[];
type[] arrayName;
type 為Java中的任意數據類型,包括基本類型和組合類型,arrayName為數組名,必須是一個合法的標識符,[ ] 指明該變數是一個數組類型變數。
/**
* 數組的三種定義方法
*
* 1.數組類型[] 數組名=new 數組類型[數組長度];
* 2.數組類型[] 數組名={數組0,數組1,數組2,數組3,….};
* 3.數組類型[] 數組名=new 數組類型[]{數組0,數組1,數組2,…};
* */
public class WhatEver {
public static void main(String[] args) {
//第一種 例:
String[] test1 = new String[6];
test1[0] = “數組0”;
test1[1] = “數組1”;
//第二種 例:
String[] test2 = {“數組0″,”數組1″,”數組2″,”….”};
//第三種 例:
String[] test3 = new String[]{“數組0″,”數組1″,”數組2″,”….”};
}
}
Java數組是同一種類型數據的集合。其實數組就是一個容器。
數組對於每一門編程語言來說都是重要的數據結構之一,當然不同語言對數組的實現及處理也不盡相同。
Java 語言中提供的數組是用來存儲固定大小的同類型元素。
你可以聲明一個數組變數,如 numbers[100] 來代替直接聲明 100 個獨立變數 number0,number1,….,number99。
JAVA二維數組存儲
不論怎麼操作,數據都是要輸入一遍的,不知道你說的操作簡便是指程序步少還是什麼的,不過50位數我建議你用字元串表存取吧,新建一個ArrayList String這樣的容器,每一個String就是一個50位數。
那你就用字元串的split方法,選擇空格符為分隔符號,然後存儲
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/257993.html