【数组】
一 數組
1.2 數組概念
- 數組概念: 數組就是存儲數據長度固定的容器,保證多個數據的數據類型要一致。
- 數組的特點: 數組的長度固定,數組中的元素類型一致
1.3 數組的定義
方式一
數組存儲的數據類型[] 數組名字 = new 數組存儲的數據類型[長度];-
注意:數組有定長特性,長度一旦指定,不可更改。
-
舉例:定義可以存儲3個整數的數組容器,代碼如下:
方式二
數據類型[] 數組名 = new 數據類型[]{元素1,元素2,元素3...};- 舉例:定義存儲1,2,3,4,5整數的數組容器。
方式三
數據類型[] 數組名 = {元素1,元素2,元素3...};- 舉例:定義存儲1,2,3,4,5整數的數組容器
二 數組原理內存圖
2.1 內存概述
內存是計算機中的重要原件,臨時存儲區域,作用是運行程序。程序是存放在硬盤中的,在硬盤中的程序是不會運行的,必須放進內存中才能運行,運行完畢后會清空內存。
Java虛擬機要運行程序,必須要對內存進行空間的分配和管理。
2.2 Java虛擬機的內存劃分
為了提高運算效率,就對空間進行了不同區域的劃分,因為每一片區域都有特定的處理數據方式和內存管理方式。
-
JVM的內存劃分:
區域名稱作用 寄存器 給CPU使用。 本地方法棧 JVM在使用操作系統功能的時候使用。 方法區 存儲可以運行的class文件。 堆內存 存儲對象或者數組,new來創建的,都存儲在堆內存。 方法棧 方法運行時使用的內存,比如main方法運行,進入方法棧中執行。
2.3 數組在內存中的存儲
一個數組內存圖
public static void main(String[] args) {int[] arr = new int[3];System.out.println(arr);//[I@5f150435 }以上方法執行,輸出的結果是[I@5f150435,是數組在內存中的地址。new出來的內容,都是在堆內存中存儲的,而方法中的變量arr保存的是數組的地址。
輸出arr[0],就會輸出arr保存的內存地址中數組中0索引上的元素
兩個數組內存圖
public static void main(String[] args) {int[] arr = new int[3];int[] arr2 = new int[2];System.out.println(arr);System.out.println(arr2); }兩個變量指向一個數組
public static void main(String[] args) {// 定義數組,存儲3個元素int[] arr = new int[3];//數組索引進行賦值arr[0] = 5;arr[1] = 6;arr[2] = 7;//輸出3個索引上的元素值System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]);//定義數組變量arr2,將arr的地址賦值給arr2int[] arr2 = arr;arr2[1] = 9;System.out.println(arr[1]); }三 數組作為方法參數和返回值
3.1 數組作為方法參數
- 數組作為方法參數傳遞,傳遞的參數是數組內存的地址。
3.2 數組作為方法返回值
- 數組作為方法的返回值,返回的是數組的內存地址
3.3 方法的參數類型區別
代碼分析
1. 分析下列程序代碼,計算輸出結果。
public static void main(String[] args) {int a = 1;int b = 2;System.out.println(a);System.out.println(b);change(a, b);System.out.println(a);System.out.println(b); }public static void change(int a, int b) {a = a + b;b = b + a; }2. 分析下列程序代碼,計算輸出結果。
public static void main(String[] args) {int[] arr = {1,3,5};System.out.println(arr[0]);change(arr);System.out.println(arr[0]); }public static void change(int[] arr) {arr[0] = 200; }總結:
方法的參數為基本類型時,傳遞的是數據值.
方法的參數為引用類型時,傳遞的是地址值.
總結
- 上一篇: 欢迎使用Markdown
- 下一篇: 面向对象---类与对象