日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

1.2 一维数组的定义、赋值和初始化

發(fā)布時間:2025/3/20 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1.2 一维数组的定义、赋值和初始化 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

當(dāng)數(shù)組中每個元素都只帶有一個下標(biāo)時,這種數(shù)組就是“一維數(shù)組”。一維數(shù)組(one-dimensional array)實(shí)質(zhì)上是一組相同類型數(shù)據(jù)的線性集合,是數(shù)組中最簡單的一種數(shù)組。

數(shù)組是引用數(shù)據(jù)類型,引用數(shù)據(jù)類型在使用之前一定要做兩件事情:聲明和初始化。所以本文將重點(diǎn)介紹一維數(shù)組的創(chuàng)建、初始化和使用。

創(chuàng)建一維數(shù)組

為了在程序中使用一個數(shù)組,必須聲明一個引用該數(shù)組的變量,并指明整個變量可以引用的數(shù)組類型。聲明一維數(shù)組的語法格式為:

type[] arrayName; // 數(shù)據(jù)類型[] 數(shù)組名; 建議用這個

或者

type arrayName[]; // 數(shù)據(jù)類型 數(shù)組名[];

可見數(shù)組的聲明有兩種形式:一種是中括號”[]“跟在元素數(shù)據(jù)類型之后,另一種是中括號”[]“跟在變量名之后。

對于以上兩種語法格式而言,Java 更推薦采用第一種聲明格式,因為第一種格式不僅具有更好的語意,而且具有更好的可讀性。對于第一種格式type[] arrayName,很容易理解這是定義一個變量,其中變量名是 arrayName,而變量類型是 type[]。

前面已經(jīng)指出:type[] 確實(shí)是一種新類型,與 type 類型完全不同(例如 int 類型是基本類型,但 int[] 是引用類型)。因此,這種方式既容易理解,也符合定義變量的語法。但第二種格式type arrayName[]的可讀性就差了,看起來好像定義了一個類型為 type 的變量,而變量名是 arrayName[],這與真實(shí)的含義相去甚遠(yuǎn)。

可能有些讀者非常喜歡type arrayName[]這種定義數(shù)組的方式,這可能是因為早期某些計算機(jī)讀物的誤導(dǎo),從現(xiàn)在開始最好就不要再使用這種糟糕的方式了。

以上兩種格式都可以聲明一個數(shù)組,其中的數(shù)據(jù)類型既可以是基本數(shù)據(jù)類型,也可以是引用數(shù)據(jù)類型。數(shù)組名可以是任意合法的變量名。聲明數(shù)組就是要告訴計算機(jī)該數(shù)組中數(shù)據(jù)的類型是什么。例如:

int[] score; // 存儲學(xué)生的成績,類型為整型 double[] price; // 存儲商品的價格,類型為浮點(diǎn)型 String[] name; // 存儲商品名稱,類型為字符串型

在聲明數(shù)組時不需要規(guī)定數(shù)組的長度,例如:

int score[10]; // 這是錯誤的

注意:在聲明數(shù)組變量時千萬不要漏寫[]。

分配空間

聲明了數(shù)組,只是得到了一個存放數(shù)組的變量,并沒有為數(shù)組元素分配內(nèi)存空間,不能使用。因此要為數(shù)組分配內(nèi)存空間,這樣數(shù)組的每一個元素才有一個空間進(jìn)行存儲。

簡單地說,分配空間就是要告訴計算機(jī)在內(nèi)存中為它分配幾個連續(xù)的位置來存儲數(shù)據(jù)。在 Java 中可以使用 new 關(guān)鍵字來給數(shù)組分配空間。分配空間的語法格式如下:

arrayName = new type[size]; // 數(shù)組名 = new 數(shù)據(jù)類型[數(shù)組長度];

其中,數(shù)組長度就是數(shù)組中能存放的元素個數(shù),顯然應(yīng)該為大于 0 的整數(shù),例如:

score = new int[10]; price = new double[30]; name = new String[20];

這里的 score 是已經(jīng)聲明過的 int[] 類型的變量,當(dāng)然也可以在聲明數(shù)組時就給它分配空間,語法格式如下:

type[] arrayName = new type[size]; // 數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[數(shù)組長度];

例 1
例如,聲明并分配一個長度為 5 的 int 類型數(shù)組 arr,代碼如下:

int[] arr = new int[5];

執(zhí)行后 arr 數(shù)組在內(nèi)存中的格式如圖 1 所示。

在圖 1 中 arr 為數(shù)組名稱,方括號“[]”中的值為數(shù)組的下標(biāo)。數(shù)組通過下標(biāo)來區(qū)分?jǐn)?shù)組中不同的元素,并且下標(biāo)是從 0 開始的。因此這里包含 5 個元素的 arr 數(shù)組最大下標(biāo)為 4。

注意:一旦聲明了數(shù)組的大小,就不能再修改。這里的數(shù)組長度也是必需的,不能少。

盡管數(shù)組可以存儲一組基本數(shù)據(jù)類型的元素,但是數(shù)組整體屬于引用數(shù)據(jù)類型。當(dāng)聲明一個數(shù)組變量時,其實(shí)是創(chuàng)建了一個類型為“數(shù)據(jù)類型[]”(如 int[]、double[]、String[])的數(shù)組對象,它具有表 1 所示的方法和屬性。

初始化一維數(shù)組

Java 語言中數(shù)組必須先初始化,然后才可以使用。所謂初始化,就是為數(shù)組的數(shù)組元素分配內(nèi)存空間,并為每個數(shù)組元素賦初始值。

能不能只分配內(nèi)存空間,不賦初始值呢?

不行,一旦為數(shù)組的每個數(shù)組元素分配了內(nèi)存空間,每個內(nèi)存空間里存儲的內(nèi)容就是該數(shù)組元素的值,即使這個內(nèi)存空間存儲的內(nèi)容為空,這個空也是一個值(null)。不管以哪種方式來初始化數(shù)組,只要為數(shù)組元素分配了內(nèi)存空間,數(shù)組元素就具有了初始值。初始值的獲得有兩種形式,一種由系統(tǒng)自動分配,另一種由程序員指定。

數(shù)組在初始化數(shù)組的同時,可以指定數(shù)組的大小,也可以分別初始化數(shù)組中的每一個元素。在 Java 語言中,初始化數(shù)組有以下 3 種方式。
1)使用 new 指定數(shù)組大小后進(jìn)行初始化
使用 new 關(guān)鍵字創(chuàng)建數(shù)組,在創(chuàng)建時指定數(shù)組的大小。語法如下:

type[] arrayName = new int[size];

創(chuàng)建數(shù)組之后,元素的值并不確定,需要為每一個數(shù)組的元素進(jìn)行賦值,其下標(biāo)從 0 開始。

例 2
創(chuàng)建包含 5 個元素的 int 類型的數(shù)組,然后分別將元素的值設(shè)置為 1、2、3、5 和 8。代碼如下:

int[] number = new int[5]; number[0] = 1; number[1] = 2; number[2] = 3; number[3] = 5; number[4] = 8;

如果程序員只指定了數(shù)組的長度,那么系統(tǒng)將負(fù)責(zé)為這些數(shù)組元素分配初始值。指定初始值時,系統(tǒng)按如下規(guī)則分配初始值。

  • 數(shù)組元素的類型是基本類型中的整數(shù)類型(byte、short、int 和 long),則數(shù)組元素的值是 0。
  • 數(shù)組元素的類型是基本類型中的浮點(diǎn)類型(float、double),則數(shù)組元素的值是 0.0。
  • 數(shù)組元素的類型是基本類型中的字符類型(char),則數(shù)組元素的值是‘\u0000’。
  • 數(shù)組元素的類型是基本類型中的布爾類型(boolean),則數(shù)組元素的值是 false。
  • 數(shù)組元素的類型是引用類型(類、接口和數(shù)組),則數(shù)組元素的值是 null。

2)使用 new 指定數(shù)組元素的值
使用上述方式初始化數(shù)組時,只有在為元素賦值時才確定值。可以不使用上述方式,而是在初始化時就已經(jīng)確定值。語法如下:

type[] arrayName = new type[]{1,2,3,4,? ? ?,值 n};

例 3
更改例 2 中的代碼,使用 new 直接指定數(shù)組元素的值。代碼如下:

int[] number = new int[]{1, 2, 3, 5, 8};

上述代碼的效果等價于例 2 的效果。

注意:不要在進(jìn)行數(shù)組初始化時,既指定數(shù)組的長度,也為每個數(shù)組元素分配初始值,這樣會造成代碼錯誤。例如下面代碼:

int[] number = new int [5] {1,2,3,4,?5};

3)直接指定數(shù)組元素的值
在上述兩種方式的語法中,type 可以省略,如果已經(jīng)聲明數(shù)組變量,那么直接使用這兩種方式進(jìn)行初始化。如果不想使用上述兩種方式,那么可以不使用 new 直接指定數(shù)組元素的值。語法如下:

type[] arrayName = {1,2,3,...,值 n};

例 4
在前面例子的基礎(chǔ)上更改代碼,直接使用上述語法實(shí)現(xiàn) number 數(shù)組的初始化。代碼如下:

int[] number = {1,2,3,5,8};

使用這種方式時,數(shù)組的聲明和初始化操作要同步,即不能省略數(shù)組變量的類型。如下的代碼就是錯誤的:

int[] number; number = {1,2,3,5,8};

獲取單個元素

獲取單個元素是指獲取數(shù)組中的一個元素,如第一個元素或最后一個元素。獲取單個元素的方法非常簡單,指定元素所在數(shù)組的下標(biāo)即可。語法如下:

arrayName[index];

其中,arrayName 表示數(shù)組變量,index 表示下標(biāo),下標(biāo)為 0 表示獲取第一個元素,下標(biāo)為 array.length-1 表示獲取最后一個元素。當(dāng)指定的下標(biāo)值超出數(shù)組的總長度時,會拋出 ArraylndexOutOfBoundsException 異常。

例 5
獲取 number 數(shù)組中的第一個元素、最后一個元素和第六個元素,并將元素的值輸出。代碼如下:

int[] number = {1,2,3,5,8}; System.out.println("獲取第一個元素:"+number[0]); System.out.println("獲取最后一個元素:"+number[number.length-1]); System.out.println("獲取第6個元素:"+number[5]);

執(zhí)行上述代碼,輸出結(jié)果如下所示:

獲取第一個元素:1 獲取最后一個元素:8 java.lang.ArrayIndexOutOfBoundsException: 5

我們一共存入了 5 個值,所以下標(biāo)的取值為 0~4。因為 number[5] 取出的內(nèi)容超過了這個下標(biāo),所以輸出結(jié)果會提示數(shù)組索引超出綁定異常(ArrayIndexOutOfBoundsException)。這一點(diǎn)是在使用數(shù)組中是經(jīng)常出現(xiàn)的問題,大家在編寫程序時應(yīng)該引起注意。

例 6
編寫一個 Java 程序,使用數(shù)組存放錄入的 5 件商品價格,然后使用下標(biāo)訪問第 3 個元素的值。

import java.util.Scanner; public class Test {public static void main(String[] args) {int[] prices = new int[5]; // 聲明數(shù)組并分配空間Scanner input = new Scanner(System.in); // 接收用戶從控制臺輸入的數(shù)據(jù)for (int i = 0; i < prices.length; i++) {System.out.println("請輸入第" + (i + 1) + "件商品的價格:");prices[i] = input.nextInt(); // 接收用戶從控制臺輸入的數(shù)據(jù)}System.out.println("第 3 件商品的價格為:" + prices[2]);} }

上述代碼的“int[] prices = new int[5]”語句創(chuàng)建了需要 5 個元素空間的 prices 數(shù)組,然后結(jié)合 for 循環(huán)向數(shù)組中的每個元素賦值。

注意:在 Java 中取得數(shù)組的長度(也就是數(shù)組元素的長度)可以利用“數(shù)組名稱.length”,返回一個 int 型數(shù)據(jù)。

數(shù)組的索引從 0 開始,而 for 循環(huán)中的變量 i 也從 0 開始,因此 score 數(shù)組中的元素可以使用 scored 來表示,大大簡化了代碼。最后使用 prices[2] 獲取 prices 數(shù)組的第 3 個元素,最終運(yùn)行效果如下所示。

請輸入第1件商品的價格: 5 請輸入第2件商品的價格: 4 請輸入第3件商品的價格: 6 請輸入第4件商品的價格: 4 請輸入第5件商品的價格: 83 件商品的價格為:6

獲取全部元素

當(dāng)數(shù)組中的元素數(shù)量不多時,要獲取數(shù)組中的全部元素,可以使用下標(biāo)逐個獲取元素。但是,如果數(shù)組中的元素過多,再使用單個下標(biāo)則顯得煩瑣,此時使用一種簡單的方法可以獲取全部元素——使用循環(huán)語句。

下面利用 for 循環(huán)語句遍歷 number 數(shù)組中的全部元素,并將元素的值輸出。代碼如下:

int[] number = {1,2,3,5,8}; for (int i=0;i<number.length;i++) {System.out.println("第"+(i+1)+"個元素的值是:"+number[i]); }

除了使用 for 語句,還可以使用 foreach 遍歷數(shù)組中的元素,并將元素的值輸出。代碼如下:

for(int val:number) {System.out.print("元素的值依次是:"+val+"\t"); }

總結(jié)

以上是生活随笔為你收集整理的1.2 一维数组的定义、赋值和初始化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。