1. 程式人生 > >Java 陣列記憶體分配方式

Java 陣列記憶體分配方式

Java中,宣告陣列的語法有兩種:

1.資料型別 陣列名[];

2.資料型別[] 陣列名;

例如:

int a[]; 與 int[] a;都是表示聲明瞭一個整型陣列a

二維陣列的宣告也類似。

來看看二維陣列存分配方式:

例如:int a[][] = new int[2][3];

其記憶體空間分配示意圖如下:

我畫的圖很醜,我想表示的意思是要注意:a.length是等於2,而不是2*3

再來個示例程式碼說明一下:

		int a[] = new int[]{10,20,30,40,50};
		System.out.println("a length:"+a.length);
		for(int i:a){
			System.out.println(i);
		}
		
		int b[][] = new int[3][4];
		System.out.println("b length:"+b.length);
		for(int i=0;i<b.length;i++){
			for(int j=0;j<b[i].length;j++){
				System.out.println("b["+i+"] length:"+b[i].length);
			}
		}

		int c[][] = new int[3][];
		c[0] = new int[2];
		c[1] = new int[3];
		c[2] = new int[2];
		System.out.println("c length:"+c.length);
		for(int i=0;i<c.length;i++){
			for(int j=0;j<c[i].length;j++){
				System.out.println("c["+i+"] length:"+c[i].length);
			}
		}
輸出結果:
a length:5
10
20
30
40
50
b length:3
b[0] length:4
b[0] length:4
b[0] length:4
b[0] length:4
b[1] length:4
b[1] length:4
b[1] length:4
b[1] length:4
b[2] length:4
b[2] length:4
b[2] length:4
b[2] length:4
c length:3
c[0] length:2
c[0] length:2
c[1] length:3
c[1] length:3
c[1] length:3
c[2] length:2
c[2] length:2


相關推薦

Java 陣列記憶體分配方式

Java中,宣告陣列的語法有兩種: 1.資料型別 陣列名[]; 2.資料型別[] 陣列名; 例如: int a[]; 與 int[] a;都是表示聲明瞭一個整型陣列a 二維陣列的宣告也類似。 來看看二維陣列存分配方式: 例如:int a[][] = new int[2][

Java 005 方法 陣列 記憶體分配

知識點梳理 心得體會 小知識點 1.方法呼叫:返回值型別為void時只能單獨呼叫,其他返回值型別可以根據需求選擇單獨呼叫、輸出呼叫、賦值呼叫 2.主函式呼叫方法的同時也是傳參給方法 3.方法過載只需記住一點:過載只與引數列表有關(個數、型別、順序),與其他無關 4.返回值型

Java直接記憶體分配和釋放方式

一. 正常分配,回收由GC負責 新增jvm啟動引數:-verbose:gc -XX:+PrintGCDetails -XX:MaxDirectMemorySize=40M 迴圈執行以下程式碼,可以看到頻繁fullGC. ByteBuffer buffer =

記憶體分配方式以及堆和棧的區別

轉載:https://blog.csdn.net/shanchangyi/article/details/51854795 對於一個程式要執行,涉及到的記憶體分配是一個首要問題,這裡簡單說一下一個簡單的程式執行所涉及到的記憶體分配方式。另外,在資料結構中存在堆和棧的概念,棧是一種先進後出的資料結

C++記憶體分配方式-堆、棧、靜態儲存區、常量儲存區

C++中,記憶體分為5個區:堆、棧、自由儲存區、全域性/靜態儲存區和常量儲存區。棧:是由編譯器在需要時自動分配,不需要時自動清除的變數儲存區。通常存放區域性變數、函式引數等。堆:是由new分配的記憶體塊,由程式設計師釋放(編譯器不管),一般一個new與一個delete對應,一個new[]與一個del

記憶體分配方式詳解(堆、棧、自由儲存區、全域性/靜態儲存區和常量儲存區)

原文地址:https://blog.csdn.net/u013007900/article/details/79338653 參考文章:http://www.cnblogs.com/hanyonglu/archive/2011/04/12/2014212.html 一、資料結構中的棧和堆 雖

陣列記憶體分配問題

B. Ehab and subtraction time limit per test 1 second memory limit per test 256 megabytes input standard input output stand

資料儲存方式記憶體分配方式

資料儲存方式: 1、未初始化的全域性變數(.bss段) 2、初始化過的全域性變數(.data段) 3、常量資料(.rodata段) 4、程式碼(.text段) 5、棧(stack) 6、堆(heap) 記憶體分配方式: 1、從靜態儲存區域分配。記憶體在程式編譯時就已經

記憶體分配方式,堆區,棧區,new/delete/malloc/free

1.記憶體分配方式 記憶體分配方式有三種: [1]從靜態儲存區域分配。記憶體在程式編譯的時候就已經分配好,這塊記憶體在程式的整個執行期間都存在。例如全域性變數,static變數。 [2]在棧上建立。在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束時這些儲存單元自動被釋放。棧記憶體分配運

java記憶體分配以及static的用法

Java記憶體分配與管理是Java的核心技術之一,一般Java在記憶體分配時會涉及到以下區域: 1.棧區:由編譯器自動分配釋放 ,存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。 2.堆區:由程式設計師分配釋放, 若程式設計師不釋放,程式

C/C++記憶體分配方式與儲存區

C/C++記憶體分配有三種方式: [1]從靜態儲存區域分配。記憶體在程式編譯的時候就已經分配好,這塊記憶體在程式的整個執行期間都存在。例如全域性變數,static變數。 [2]在棧上建立。在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束時這些儲存單元自動被釋放。棧記憶體分配運算內置於處

c++記憶體分配方式,堆與棧區別

1)棧區(stack):由編譯器自動分配釋放 ,存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。 2)堆區(heap):一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由OS回收。注意它與資料結構中的堆是兩回事,分配方式倒是類似於連結串列。 3)全域性/靜態區

Qt總結之十二:C/C++記憶體分配方式與儲存區

一、C/C++記憶體分配有三種方式   從靜態儲存區域分配。記憶體在程式編譯的時候就已經分配好,這塊記憶體在程式的整個執行期間都存在。例如全域性變數,static變數。 在棧上建立。在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束時這些儲存單元

Java 堆疊記憶體分配

很多人在Java的書籍中看到過很多關於堆和棧記憶體的教程以及參考說明, 但是很難解釋什麼是程式的堆記憶體以及棧記憶體 一: Java 堆記憶體空間 Java程式執行時使用java Heap 記憶體為物件以及JRE類分配記憶體, 不論我們在何時建立何種型別

C語言記憶體分配方式及malloc,realloc,calloc,alloc.free函式

C語言跟記憶體分配方式   (1) 從靜態儲存區域分配。記憶體在程式編譯的時候就已經分配好,這塊記憶體在程式的整個執行期間都存在。例如全域性變數,static變數。   (2)在棧上建立。在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束時這些儲存單元

cuda二維陣列記憶體分配和資料拷貝

因為cuda具有高效利用GPU進行科學計算的優勢,而人工智慧的重點之一就是複雜的計算任務,因此學好GPU計算是學習AI的重點任務。這裡,我們即將進行利用共享記憶體的矩陣運算。 我們看一個例子,如何對矩陣進行分配顯示卡記憶體以及元素賦值操作。通常來講,在GPU中分配記憶體使用的是cudaMalloc函式,

淺談記憶體分配方式以及堆和棧的區別(很清楚)

對於一個程式要執行,涉及到的記憶體分配是一個首要問題,這裡簡單說一下一個簡單的程式執行所涉及到的記憶體分配方式。另外,在資料結構中存在堆和棧的概念,棧是一種先進後出的資料結構,堆則是一種排序方式,而在記憶體分配中也存在堆(heap)和棧(stack)的概念,與資料結構中的概

陣列記憶體分配之堆、棧

首先看一下陣列: 陣列是儲存同一種資料型別多個元素的集合。也可以看成是一個容器。 陣列既可以儲存基本資料型別,也可以儲存引用資料型別。 陣列的定義格式: 格式1:資料型別[]  陣列名;int[

結構體指標陣列 記憶體分配 釋放

#include <iostream> #include <vector> #include <map> #include <iterator> #include <algorithm> using namesp

淺談java記憶體分配問題

記憶體記憶體大家都知道(當然不是硬碟啊)。與c、c++相比呢,Java在記憶體管理的方面一個優越之處就是我們不用顯式的去對物件進行記憶體的分配和記憶體的回收,可能有人會著迷於對記憶體使用分配的這種快感,但是隨著程式變大,對於記憶體的維護工作也就越來越大。Java的JVM的自動