Java中陣列表示1(一維陣列的定義、初始化和記憶體中陣列的表示)
各個語言中都有陣列,但Java中是有區別的,Java中只有一維陣列,沒有多維陣列,多維陣列使用陣列的陣列來表示的。所以下面介紹的陣列主要以一維陣列來表示。
1.陣列的定義
陣列型別也是一種型別,本身是一種引用型別,例如int是一個基本資料型別,但是int[]就是一種引用資料型別。其定義方式有兩種,分別為:
- 型別 陣列名[]; 如:String arrayName1[]; int arrayName2[];
- 型別[] 陣列名; 如:String[] arrayName1; int[] arrayName2;
推薦使用第二種宣告方式,因為第二種宣告方式具有更好的可讀性,對於int[] arrayName方式,很容易可以理解成:定義一個變數arrayName,型別為int[]。
2.陣列的初始化
Java在陣列宣告時並不為陣列分配儲存空間(不同於其它高階語言),僅有陣列宣告,而未分配儲存空間。Java語言中陣列必須先初始化,然後才可以使用。初始化包括陣列的記憶體分配和對陣列元素賦初始值。
Java陣列的初始化分為兩種方式:
- 靜態初始化:陣列定義與陣列元素的空間分配和賦值操作同時進行。
- 動態初始化:陣列定義與陣列元素的空間分配和賦值操作分開進行。
2.1 靜態初始化
陣列初始化是指在宣告陣列的同時指定陣列元素的初始值。
語法格式如下:arrayName = new type[] {element1, element2, …};
例如:
int[] intArray = new int[]{1, 2, 3, 4, 5}; double[] decArray = new double[]{1.1, 2.2, 3.3}; String[] strArray = new String[]{"Java", "Android", "FORTRAN"};
靜態初始化還有一種簡化的資料形式(比上面的方式用的更廣泛):
int[] intArray = {1, 2, 3, 4, 5};
double[] decArray = {1.1, 2.2, 3.3};
String[] strArray = {"Java","Android","FORTRAN"};
注意:如下幾種陣列初始化方式是不允許的:
陣列的長度由程式自動計算,不需要我們手動寫。int[] intArray = new int[5]{1, 2, 3, 4, 5}; //錯誤 int[5] intArray = new int[]{1, 2, 3, 4, 5}; //錯誤 int[5] intArray = {1, 2, 3, 4, 5}; //錯誤
2.2 動態初始化
為已宣告陣列(型別 陣列名[ ])動態分配空間的一般形式如下:arrayName = new type[arrayLength];
注:陣列大小也稱為陣列的長度,可以為整型常量或變數。
例如:
int[] value1;
value1=new int[10];
int[] value2=new int[10]; //宣告陣列的同時,用new運算子為陣列分配空間
// int[10] value3 = new int[10]; //錯誤
2.3 一維陣列的訪問
一維陣列的訪問語法如下:
語法:陣列[下標] 下標是從0開始的。
int[ ] a = new int[4];
a[0] = 20; //訪問陣列元素並賦值
a[1] = a[0] + 10;
其示意圖如下:
注意:訪問其他元素會產生陣列越界錯誤,會出現異常:ArrayIndexOutOfBoundsException,如訪問a[4]。
3.陣列的記憶體表示
為陣列分配空間有兩種方法:陣列初始化和使用new運算子;為陣列分配空間後,陣列變數指向陣列儲存空間的引用地址。其記憶體分配的過程如下:
首先,在int i這句話執行完後,在棧(Stack)空間中新建了一個int型別的空間,名稱為i,如下:
其次,執行完int[] a這句話之後,只是在佔空間中定義了一個int[] 型別的陣列,名稱為a,如下:
在執行完a=new int[4]後,這樣才算在堆(Heap)記憶體中新建了一個長度為4個int型別陣列,如下:
在執行完for迴圈後,陣列的值也進行了重新賦值,如下:
全文完。轉載請註明出處。
相關推薦
Java中陣列表示1(一維陣列的定義、初始化和記憶體中陣列的表示)
各個語言中都有陣列,但Java中是有區別的,Java中只有一維陣列,沒有多維陣列,多維陣列使用陣列的陣列來表示的。所以下面介紹的陣列主要以一維陣列來表示。 1.陣列的定義 陣列型別也是一種型別,本身是一種引用型別,例如int是一個基本資料型別,但是int[]就是一種引用資
C++小知識(陣列的定義、初始化和賦值)
在C/C++中,可以在陣列定義的時候對其進行初始化:int a1[3] = {1, 2, 3}; int a2[3] = {0}; //將陣列a2各個元素賦值為0。int a3[] = {1, 2, 3}; char s1[3] =
java成員變數和區域性變數的初始化和記憶體中的執行機制
成員變數: 當系統載入類或建立類的例項時,系統會自動為成員變數分配記憶體空間,並在分配記憶體空間後,自動為成員變數指定初始值。 eyeNum是類屬性。name是例項屬性 所有person例項訪問eyeNum都將訪問person類的eyeNum屬性。訪問的是同一塊記憶
2.1詳解變數的定義、初始化與賦值
在前的課程中我們談到,變數其實就是一塊記憶體空間的名稱。簡要地說,計算機擁有可供程式使用的隨機存取儲存器(RAM),當一個變數被定義時,一部分記憶體就會被預留給這個變數。 記憶體的最小單位是二進位制數字(binary digit,bit,位元),0或者1。你可以把bi
淺析C++中結構體的定義、初始化和引用
#include<iostream>using namespace std; struct Date{ //宣告一個結構體型別Date int month; //日期中的月份 int day; //日期中的天 int year; //日
指標與陣列的關係(一維、二維)
一、指標和一維陣列間的關係 前提條件: int a[10];//元素個數隨意自己定 int *p = a;//定義指標時直接初始化,也可以分為兩步:int *p; p=a; 第i個元素的地址: &am
JAVA基礎(19)---陣列的定義、初始化及遍歷
陣列 陣列的定義:將同種型別的資料,有組織的存放與一定的記憶體空間中。 陣列的定義格式: 常用的格式: ①資料型別[] 陣列名稱 = new 資料型別[定義陣列的大小];
c語言一維陣列的定義、初始化
一維陣列 1、定義:是一組具有相同資料型別的有序元素集合。 2、初始化: (1)、初始化方式一: //陣列的定義: int a[length]; //這是陣列的定義 //可以使用for迴圈進行遍歷初始化 for (int i =
Python輸入數組(一維數組、二維數組)
python aac off class 二維數組 之間 pan wrapper == 一維數組: arr = input("") //輸入一個一維數組,每個數之間使空格隔開 num = [int(n) for n in arr.split()] //將輸入每
leetcode 198 打家劫舍 (一維動態規劃、基礎)
題目:你是一個職業盜賊,鎖定了一條大街準備今晚作案,街上每棟房子裡都有固定量的財務。但是相鄰的房子之間有報警器,一旦兩個相鄰的房子在同一晚被盜,就會觸發報警器。現已知一系列非負整數表示每個房子裡的財務數目,請計算在不觸發報警器的情況下,你今晚可以盜取的最大值。思路:因為我可以
變量的聲明、定義、初始化(轉)
局部變量 聲明和定義 包含 int 外部變量 存儲 變量聲明 bsp 運行 先分享一下關於變量聲明和定義的區別: 變量的聲明有兩種情況: (1) 一種是需要建立存儲空間的(定義、聲明)。例如:int a在聲明的時候就已經建立了存儲空間。 (2) 另一種是不需要
tensorflow入門(二) 變數的定義、初始化、值的檢視
1、常量 constant是TensorFlow的常量節點,通過constant方法建立,其是計算圖(Computational Graph)中的起始節點,是傳入資料; import tensorflow as tf sess = tf.Interact
陣列的定義、初始化及特點詳解
陣列(Array),就是把有限個數據型別一樣的元素按順序放在一起,用一個變數命名,然後通過編號可以按順序訪問指定位置的元素的一個有序集合。 其實簡單來說,就是為了方便而把這些元素放在一起。我們通過編號去獲取每個元素,這個編號叫作下標或者索引(Index),一般的語言是從 0 開始的。 我們常說的陣列一般指
C++字元陣列的定義、初始化、引用
用來存放字元資料的陣列是字元陣列,字元陣列中的一個元素存放一個字元。字元陣列具有陣列的共同屬性。由於字串應用廣泛,C和C++專門為它提供了許多方便的用法和函式。 一、字元陣列的定義和初始化 定義字元陣列的方法與前面介紹的類似。例如char c[10];c[0]=′I′;c[1]=′ ′;c[2]=′a′;c
GO語言————8.1 MAP宣告、初始化和make
8.0 Mapmap 是一種特殊的資料結構:一種元素對(pair)的無序集合,pair 的一個元素是 key,對應的另一個元素是 value,所以這個結構也稱為關聯陣列或字典。這是一種快速尋找值的理想結構:給定 key,對應的 value 可以迅速定位。map 這種資料結構在
Java變數的宣告、初始化和作用域
一.Java變數的宣告 在 Java 程式設計中,每個宣告的變數都必須分配一個型別。宣告一個變數時,應該先宣告變數的型別,隨後再宣告變數的名字。下面演示了變數的宣告方式。 double salary; int age; Boole
細談 物件的初始化過程------記憶體中的實現過程?
今天對於記憶體的理解 又加深了一步: 對下面程式碼的理解: class Person { private String name="xiaohong"; private int age=23; private static String country="CN";
mysql8.0 Server 在Windows平臺中的安裝、初始化和遠程訪問設置
ner oot ali 文件 想要 net 成了 基於 progress mysql8.0 server安裝1.下載mysql 8.0可以到mysql官網下載 https://dev.mysql.com/downloads/mysql 或者如下地址 mysql-8.0.13
0-1揹包與完全揹包 SDNUOJ1033採藥(一維陣列)1043採藥2(一維陣列)
1033(一維陣列)(揹包容量 j 逆序列舉)0-1揹包 #include<iostream> #include<cstring> #include<cmath> using namespace std; #define N 1005 int v[N]
java之中的陣列聯絡(一維轉置)
public class TestString{public static void main(String args[]){int data[] = new int [] {1,2,3,4,5,6} ;print(data) ;reverse(data);print(data);}public static