標籤:java數組篇總結
數組(數組篇學於傳智和王偉老師)
1、數組:儲存同一種資料類型的多個元素的容器。
2、特點:每一個元素都有編號,從0開始,最大編號是長度-1。編號的專業叫法:索引
3、定義格式
3.1):資料類型[] 數組名;
3.2):資料類型 數組名[];
推薦是用A方式,B方法就忘了吧。但是要能看懂
4、數組的初始化
4.1)動態初始化
只給長度,系統給出預設值
舉例:int[] arr = new int[3];
4.2)靜態初始化
給出值,系統決定長度
舉例:int[] arr = new int[]{1,2,3};
簡化版:int[] arr = {1,2,3};
5、Java的記憶體配置
棧 儲存局部變數
堆 儲存所有new出來的
方法區(物件導向部分詳細講解)
本地方法區(系統相關)
寄存器(CPU使用)
記憶體配置圖:
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M01/8E/80/wKiom1jCTF6g0y1MAAI-TP6V50c400.png-wh_500x0-wm_3-wmp_4-s_3855849351.png" title="1.png" alt="wKiom1jCTF6g0y1MAAI-TP6V50c400.png-wh_50" />
注意:
a:局部變數 在方法定義中或者方法聲明上定義的變數。
b:棧記憶體和堆記憶體的區別
棧:資料使用完畢,就消失。
堆:每一個new出來的東西都有地址
每一個變數都有預設值
byte,short,int,long 0
float,double 0.0
char ‘\u0000‘
boolean false
參考型別 null
資料使用完畢後,在記憶體回收行程閒置時候回收。
6、數組記憶體配置圖
一個數組
650) this.width=650;" src="https://s3.51cto.com/wyfs02/M02/8E/81/wKiom1jCTKWDRg2oAAA2dmYKjfs949.png-wh_500x0-wm_3-wmp_4-s_4183753482.png" title="2.png" alt="wKiom1jCTKWDRg2oAAA2dmYKjfs949.png-wh_50" />
二個數組
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M01/8E/7F/wKioL1jCTM7Dtp9cAAIsjARafsc638.png-wh_500x0-wm_3-wmp_4-s_691766234.png" title="3.png" alt="wKioL1jCTM7Dtp9cAAIsjARafsc638.png-wh_50" />
C:三個數組(兩個棧變數指向同一個堆記憶體)
650) this.width=650;" src="https://s4.51cto.com/wyfs02/M02/8E/81/wKiom1jCTQ7xsTpFAAKDx1Mn_g4137.png-wh_500x0-wm_3-wmp_4-s_146179413.png" title="4.png" alt="wKiom1jCTQ7xsTpFAAKDx1Mn_g4137.png-wh_50" />
7、數組遍曆案例:
7.1)遍曆:
//方式1:public static void printArray(int[] arr) {for(int x=0; x<arr.length; x++) {System.out.println(arr[x]);}}//方式2:public static void printArray(int[] arr) {System.out.print("[");for(int x=0; x<arr.length; x++) {if(x == arr.length-1) {System.out.println(arr[x]+"]");}else {System.out.println(arr[x]+", ");}}}
7.2)最值
//最大值:publicstatic int getMax(int[] arr) {int max = arr[0];for(int x=1; x<arr.length; x++) {if(arr[x] > max) {max = arr[x];}}return max;}//最小值:public static int getMin(int[] arr) {int min = arr[0];for(int x=1; x<arr.length; x++) {if(arr[x] < min) {min = arr[x];}}return min;}
7.3)逆序
//方式1:public static void reverse(int[] arr) {for(int x=0; x<arr.length/2; x++) {int temp = arr[x];arr[x] = arr[arr.length-1-x];arr[arr.length-1-x] = temp;}}//方式2:public static void reverse(int[] arr) {for(int start=0,end=arr.length-1; start<=end; start++,end--) {int temp = arr[start];arr[start] = arr[end];arr[end] = temp;}}
7.4)基本尋找
//方式1:public static int getIndex(int[] arr,int value) {for(int x=0; x<arr.length; x++) {if(arr[x] == value) {return x;}}return -1;}//方式2:public static int getIndex(int[] arr,int value) {int index = -1;for(int x=0; x<arr.length; x++) {if(arr[x] == value) {index = x;break;}}return index;}
7.5)查表:
public static String getString(String[] strArray,int index) {return strArray[index];}
7.6)鍵盤錄入成績數組案例:
import java.util.Scanner;class TestArr1 {public static void main(String[] args) {Scanner s = new Scanner(System.in);double [] scores = new double[5];double sum = 0;double avg = 0;double min = 100;double max = 0;for(int i = 0;i<scores.length;i++){scores[i]=s.nextDouble();}for(int i = 0;i<scores.length;i++){sum += scores[i];if(scores[i]<min){min = scores[i];}if(scores[i]>max){max = scores[i];}}avg = sum/scores.length;System.out.println("平均成績:"+avg+",最低成績:"+min+",最高成績:"+max);}}
二維數組
2.1)元素是一維數組的數組。
2.2)格式:
A:資料類型[][] 數組名 = new 資料類型[m][n];
B:資料類型[][] 數組名 = new 資料類型[m][];
C:資料類型[][] 數組名 = new 資料類型[][]{{...},{...},{...}};
D:資料類型[][] 數組名 = {{...},{...},{...}};
2.3)遍曆案例
import java.util.Scanner;class TestArr {public static void main(String[] args) {/*int[][] arr = {{1,2,3},{2,3,4},{3,4,5}};int[][] _arr = {};int[][] arr1 = new int[3][2]; int[][] _arr1 = new int[][]{{1,2,3},{2,3,4},{3,4,5}};int [][] arr2 = new int[3][];arr2[0] = new int[]{1,2,3};arr2[1] = new int[]{2,3,4};arr2[2] = new int[]{5,6,7};//int[][][] arr3 = new int[5][6][6];//遍曆二維數組的多有元素 //一層迴圈是遍曆二維中的所有一維數組for(int i = 0;i<arr2.length;i++){//二層迴圈遍曆一維數組中的所有元素for(int j = 0;j<arr2[i].length;j++){System.out.print(arr2[i][j]+"\t");}System.out.println();}*///定義一個長度為3的二維數組,裡面有3個長度為3的一維數組//向裡面添加數字,//1 2 3//4 5 6//7 8 9Scanner s = new Scanner(System.in);int n = s.nextInt();int[][] arr = new int[n][n];int number = 1;for(int i = 0;i<arr.length;i++){for(int j = 0;j<arr[i].length;j++){arr[i][j] = number; number++;}}for(int i = 0;i<arr.length;i++){for(int j = 0;j<arr[i].length;j++){System.out.print(arr[i][j]+"\t");}System.out.println();}}}
2.4)索引案例:
class Test24_2 {public static void main(String[] args) {int [] arr = new int[]{2,3,4,45,66,7,4};int maxNumber = Integer.MIN_VALUE;int minNumber = Integer.MAX_VALUE;int maxIndex = 0;int minIndex = 0;for(int i = 0;i<arr.length;i++){if(arr[i]>maxNumber){maxNumber = arr[i];maxIndex = i;}if(arr[i]<minNumber){minNumber = arr[i];minIndex = i;}}System.out.println("最大:"+maxNumber+"索引是:"+maxIndex+",最小:"+minNumber);}}
本文出自 “永不放棄!任志遠” 部落格,謝絕轉載!
Java數組篇總結