Java學習:數組的使用和注意事項


數組

數組的概念:是一種容器,可以同時存放多個數據值

數組的特點:

  1. 數組是一種引用數據類型
  2. 數組當中的多個數據,類型必須統一
  3. 數組的長度在程序運行期間不可以改變

數組的初始化:在內存當中創建一個數組,並且向其中賦予一些默認值。

兩種常見的初始化方式:

1.動態初始化(指定長度)
2.靜態初始化(指定類容)

動態初始化數組的格式:
數據類型[] 數組名稱 = new 數組類型[數組長度];

解析含義:

  • 左側數據類型:也就是數組當中保存的數據,全都是統一的什么類型
  • 左側的括號:代表是一個數組
  • 左側數組名稱:給數組取一個名字
  • 右側的new:代表創建數組的動作
  • 右側的數據類型:必須和左邊的數據類型保持一致
  • 右側中括的長度:也就是數組當中,到底可以保存多少個數據,是一個int數字
//動態初始化(指定長度)
int[] array1 = new int[3377];

數組定義的格式-靜態初始化

動態初始化(指定長度):在創建數組的時候,直接指定數組當中的數據元素個數
靜態初始化(指定類容):在創建數組的時候,不直接指定數據個數多少,而是直接將具體的數據類容進行指定。

靜態初始化基本格式:
數據類型[] 數組名稱 = new 數據類型[]{元素1,元素2,...}

注意事項:
雖然靜態初始化沒有直接告訴長度,但是根據大括里面的元素具體內容,也可以自動推算出來長度。

//靜態初始化
String[] array2 = new String[]{"cai","niao","chuan","qi"};

使用靜態初始化數組的時候,格式還可以省略一下。

//省略格式
數據類型[] 數組名稱 = {元素1,元素2,...};

注意事項:
1.靜態初始化沒有直接指定長度,但是仍然會自動推算得到長度。
2.動態和靜態初始化可以拆分為兩步驟。
3.靜態初始化一旦使用省略模式,就不能拆分成為兩步驟了。

//拆分為兩步驟。
int[] array1;
array1 = new int[7]

int[] array2;
array2 = new int[] {3,4,5,6,7}

數組元素的訪問

直接打印數組名稱:得到的是數組對應的,內存地址哈希值。

訪問數組元素的格式:數組名稱[索引值]
索引值:就是一個int數字,代表數組當中元素編號。

【注意】:索引值從0開始,一直到“數組的長度-1”為止。

使用動態初始化數組的時候,其中的元素將會自動擁有一個默認值。如下:

  • 如果是整數類型:那么默認值為0
  • 如果是浮點類型:那么默認值為0.0
  • 如果是字符類型:那么默認值為\u0000
  • 如果是布爾類型:那么默認值為false
  • 如果是引用類型:那么默認值為null

注意事項:
靜態初始化其實也有默認值,只不過系統自動馬上將默認值替換成為了大括當中的具體數值。

Java的內存需要划分成為5個部分:

1.棧(Stack):存放的都是方法中的局部變量。方法的運行一定要在棧當中運行。

  • 局部變量:方法的參數,或者是方法{}內部的變量
  • 作用域:一旦超出作用域,立從棧內存當中消失。

2.堆(Heap):凡是new出來的東西,都在堆當中。
堆內存里面的東西都有一個地址值:16進制
堆內存里面的數據,都有默認值。規則:

  • 如果是整數類型:那么默認值為0
  • 如果是浮點類型:那么默認值為0.0
  • 如果是字符類型:那么默認值為\u0000
  • 如果是布爾類型:那么默認值為false
  • 如果是引用類型:那么默認值為null

3.方法區(Method Area):存儲.class相關信息,包含方法的信息。

4.本地方法棧(Native Method Stack):與操作系統相關。
5.寄存器(pc Register):與cpu相關。

數組操作異常:

數組索引號越界異常
數組的索引編號從0開始,一直到“數組的長度-1”為止。

如果訪問數組元素的時候,索引號並不存在,那么將會發生

數組索引號越界異常
ArrayIndexOutOfBoundsException

原因:索引編號寫錯了。
解決:修改成為存在正確索引編號

空指針異常

所有的引用類型變量,都可以賦值為一個null值。但是代表其中什么都沒有。

數組必須進行new初始化才能使用其中的元素。
如果只是賦值了一個null,沒有進行new創建,那么將會發生

空指針異常 
NullPointerException

原因:忘了new
解決:補上new

獲取數組的長度

如何獲取數組的長度,格式:

數組名稱.length

這將會得到一個int數字,代表數組的長度

數組一旦創建,程序運行期間,長度不可改變。

例子:數組的反轉
public class CaiNaio{
    
    public static void main(String[] args){
        int[] array = {10,20,30,40,50};
        //遍歷打印數組本來的樣子
        for(int i = 0;i<array.length;i++){
            System.out.println(array[i]);
            }
            //進行反轉操作
        for(int min = 0,max = array.length-1;min <max;min++,max--){
            int temp = array[min];
            array[min] = array[max];
            array[max] = array[temp];
        }
        
        //再次遍歷打印數組
        for(int i = 0;i<array.length;i++){
            System.out.println(array[i]);
            }
    }
}

數組可以作為方法的參數

當調用方法的時候,向方法的小括進行傳參,傳遞進去的其實是數組的地址值。

一個方法可以有0、1、多個參數,但是只能有0或者1個返回值,不能有多個返回值。
如果希望一個方法當中產生了多個結果數據進行返回,怎么辦?
解決方案:使用一個數組作為返回值類型即可。

數組可以作為返回值類型

任何數據類型都能作為方法的參數類型,或者返回值類型

  • 數組作為方法的參數,傳遞進去的其實是數組的地址值。
  • 數組作為方法的返回值,返回的其實也是數組的地址值。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM