Java數組篇總結

來源:互聯網
上載者:User

標籤: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數組篇總結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.