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