數(shù)組的建立與運用

Java數(shù)組的理解與運用

1、什么是數(shù)組?

? ? ? 數(shù)組是用來存放多個相同類型的變量的集合體。在內(nèi)存中是連續(xù)存儲的。

? ? ? 可以理解為:定義了一個數(shù)組就相當于一次定義了相同類型的多個變量。

? ? ? 如:int a[] ={5,6,7,8}; 就是一次定義了4個int型的變量,其值為:5,6,7,8。

2.什么是數(shù)組元素?

? ? 構(gòu)成數(shù)組的每一個變量就稱為一個數(shù)組元素。通常通過數(shù)組下標來表示。

3.什么是數(shù)組下標?

? ? ? 下標就是數(shù)組元素在數(shù)組中的位置。在一個數(shù)組中下標是從0開始,依次累加1到數(shù)組長度減1。特別注意不是從1開始而是從0開始的。

? ? ? 如:int a[] ={5,6,7,8}; a[0]=5,a[1]=6,a[2]=7,? a[3]=8;

4.什么是數(shù)組長度?

? ? ? 數(shù)組長度就是數(shù)組中元素的個數(shù)。

? ? ? 數(shù)組長度也叫數(shù)組大小。

? ? ?獲取數(shù)組長度的方法:數(shù)組名.length

? ? ?如:int a[] ={5,6,7,8}; 數(shù)組長度為:a.length =4。

? ? ?注意:數(shù)組長度是在為數(shù)組元素分配內(nèi)存是就確定的大小,一旦確定就不可在改變。

5.一維數(shù)組使用

? ? ?數(shù)組使用分為四步:

? ? (1)定義數(shù)組

? ? ? ? ?數(shù)據(jù)類型 數(shù)組名 [ ];? 或? 數(shù)據(jù)類型 [ ]? 數(shù)組名;

? ? ? ? ?例如 :int score[ ];? ? ?或? int [ ] score;

? ? ? ? 語法解析:

? ? ? ? ? 1.數(shù)組是什么數(shù)據(jù)的類型,數(shù)組元素就是就是什么數(shù)據(jù)類型。

? ? ? ? ? 2.數(shù)組的特征是 [ ]。

? ? ? ? ? 3.數(shù)組是引用類型。

? ? ? ? ? ? ? ? 定義數(shù)組本質(zhì)就是想JVM申請內(nèi)存,JVM將內(nèi)存分為方法區(qū)、堆、棧三部分,不同部分存儲不同類型數(shù)據(jù)。定義數(shù)組時,JVM將數(shù)組名稱存儲在棧中,棧是一個先進后出的數(shù)據(jù)結(jié)構(gòu)。數(shù)組內(nèi)容則是存儲在堆中的數(shù)組元素的首地址(用首地址代表存放數(shù)組元素的整塊地址)。

? ? ? ?(2)為數(shù)組元素分配內(nèi)存

? ? ? ? ? ? 聲明數(shù)組時僅指定了數(shù)組名稱和元素的類型,并沒有指定數(shù)組個數(shù),也沒有為數(shù)組元素分配內(nèi)存,所以無法使用數(shù)組存儲元素。想要系統(tǒng)為數(shù)組元素分配存儲空間,就必須指出數(shù)組元素個數(shù),并通過new運算符為數(shù)組元素分配空間。(通過new運算符分配的元素都存儲在堆中)

????????????為數(shù)組元素分配內(nèi)存空間語法格式:

????????????????????數(shù)組名 = new 數(shù)據(jù)類型[數(shù)組長度];

????????????????????例如:score = new int [5](score 數(shù)組中有int 型的5個數(shù)據(jù))

????????????????????注:(1)和(2)合并在一起寫: int []score = new int [5];? 此時數(shù)組長度已定為? ? ? ? ? ? ? ? ? ?????5,永不可改。

? ? ? ?(3)數(shù)組元素初始化

? ? ? ? ? ? ? ? ? ? 數(shù)組聲明并為數(shù)組元素分配空間后,必須為數(shù)組元素初始化(賦值)后才能使用數(shù)組。如果沒有為數(shù)組初始化,數(shù)組元素也有默認值如下表:

? ? 一般通過數(shù)組下標為數(shù)組元素初始化。

????????????例如:

????????????????score[0][=60;? ?

????????????????score[1]=70;? ? ......

????????????????score[4]=90;

????????????????注:(1)、(2)、(3)也可以合在一起寫: int [ ]score = new int[ ]{60,54,63,25};? 或? int score[ ] = ????????????new int[ ]{60,54,63,25};? ?或 int [ ]score ={60,54,63,25};? 特別注意在這三個方式中[]里面皆不可再寫長度。

? ?(4)使用數(shù)組:

????????一般使用數(shù)組求最大值,最小值,平均值,求和以及排序和查找等。

????????例如:創(chuàng)建一個成績的數(shù)據(jù),統(tǒng)計最大值,最小值,平均值,求和。

public static void main(String[] args) {

? ? ? ? Scanner s = new Scanner(System.in);

? ? ? ? int []score = new int[5];

? ? ? ? //成績初始化

? ? ? ? for (int i = 0; i < score.length; i++) {

? ? ? ? ? ? System.out.println("請輸入第"+(i+1)+"個學(xué)生的成績");

? ? ? ? ? ? score[i]= s.nextInt();

? ? ? ? }

? ? ? ? //求最高分,求最低分

? ? ? ? int max? = score[0];

? ? ? ? int min = score[0];

? ? ? ? for (int i = 1; i < score.length; i++) {

? ? ? ? ? ? if(max<score[i]){

? ? ? ? ? ? ? ? max = score[i];

? ? ? ? ? ? }

? ? ? ? ? ? if(min>score[i]){

? ? ? ? ? ? ? ? min = score[i];

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? System.out.println("最高分為"+max);

? ? ? ? System.out.println("最低分為"+min);

? ? ? ? //總分

? ? ? ? int sum = 0;

? ? ? ? for (int i = 0; i < score.length; i++) {

? ? ? ? ? ? sum += score[i];

? ? ? ? }

? ? ? ? System.out.println("班級總分:"+sum);

? ? ? ? System.out.println("班級平均分"+sum/score.length);

? ? }

排序中常用冒泡、選擇、插入排序等。

冒泡排序:


選擇排序:

插入排序:

查找一般使用二分法:

注意:二分查找是先排序之后在查找。

排序:

查找:

結(jié)果:


數(shù)組的工具類Arrays:

1.判斷兩個數(shù)組是否相等:Arrays.equals()??

2.將數(shù)組轉(zhuǎn)換成字符串:Arrays.toString()

結(jié)果:

3.對數(shù)組元素進行升序排序:Arrays.sort()

結(jié)果:


4.將數(shù)組所有元素賦值為相同的值:Arrays.fill(數(shù)組,值);

結(jié)果:

5.將數(shù)組賦值成一個長度為設(shè)定值的新數(shù)組:Arrays.copyOf(數(shù)組,長度)

結(jié)果:

6.查詢元素在數(shù)組中的下標:Arrays.binarySearch(數(shù)組,查找值)

結(jié)果:

分析:

若找到了數(shù)據(jù),則返回該數(shù)據(jù)的下標

若找不到數(shù)據(jù),則返回負數(shù),其值為該數(shù)據(jù)在數(shù)組中排序的位置

二維數(shù)組使用:

語法與一維數(shù)組類似

(1)定義數(shù)組

? ? ? ? ?數(shù)據(jù)類型 數(shù)組名 [ ][ ];? 或? 數(shù)據(jù)類型 [ ] [ ] 數(shù)組名;

? ? ? ? ?例如 :int score[ ][ ];? ? ?或? int [ ] [ ]score;

????????????[ ] [ ]表示二維,第一個[ ] 表示第一維,第二個[ ] 表示第二維。

? ? ? ?(2)為數(shù)組元素分配內(nèi)存

????????????int score[ ][ ];

????????????score=new int[3][3];? //三行三列共九個數(shù)據(jù)

? ? ? ?(3)數(shù)組元素初始化

?????????????int score[ ][ ]=new int[ ][ ]{{1,2,3},{4,5,6},{7,8,9}};或?

? ? ? ? ? ? ?int score[ ][ ]={{1,2,3},{4,5,6},{7,8,9}};

? ?(4)使用數(shù)組:

有三個班級,每個班級3名學(xué)生,計算班級總成績:

結(jié)果:


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、泛型方法 1、聲明語法 傳遞方法的泛型參數(shù):調(diào)用的時候傳遞泛型參數(shù) 變量.< 實際的泛型類型>方法名(); 方...
    海賊王日熊閱讀 177評論 0 0
  • 本篇記錄學(xué)習js時的一些收獲,包含以下內(nèi)容,在語法上有遞進關(guān)系: 1、js循環(huán)遍歷的技巧(label語句、for....
    bikaY閱讀 146評論 0 0
  • 取并集 結(jié)果 取交集 結(jié)果 取差集 結(jié)果 數(shù)組對象 取交集 結(jié)果 取差集 最近,自己項目中有一些數(shù)組操作,涉及到一...
    三絲閱讀 151評論 0 0
  • 數(shù)組(Array) 什么是數(shù)組 數(shù)組是最常見的一種數(shù)據(jù)結(jié)構(gòu),它是相同類型的用一個標識符封裝到一起的基本類型數(shù)據(jù)序列...
    夜雨流云閱讀 505評論 0 0
  • 一、一維數(shù)組 1.1數(shù)組的聲明與創(chuàng)建 定義:數(shù)組是一種數(shù)據(jù)結(jié)構(gòu),它表示一組相同類型的數(shù)據(jù)。使用數(shù)組需要遵守“先聲明...
    柚_稚閱讀 939評論 2 0

友情鏈接更多精彩內(nèi)容