Java入門系列-10-陣列

要成為王的男人發表於2018-10-22

這篇文章為你搞懂2個問題
1.什麼是陣列,陣列是幹嘛用的?
2.陣列如何使用?

考試結束後,老師給二狗安排了一項任務,統計班裡40名同學的平均分。按照我們之前的做法,我們可以定義40個變數然後再相加除以40求出平均分,但是這樣太繁瑣了,有沒有更好的辦法呢?那就是使用 陣列。

陣列

陣列其實也是一個變數,顧名思義儲存了一組相同型別的資料,宣告一個陣列就是在記憶體空間中分配出一連串的空間。

元素1 元素2 元素3 ……

使用陣列需要四個步驟:

1.宣告陣列 int[] a;

2.分配空間 a=new int[5];

3.賦值 a[0]=8;

4.處理資料 a[0]=a[0]*10;

陣列中的元素通過下標進行訪問,下標從0開始
陣列長度是在分配完空間後是固定不變的 陣列中所有的元素必須是相同的資料型別

1.宣告陣列:告訴計算機資料型別是什麼

語法:

資料型別 陣列名[];
資料型別[] 陣列名;
複製程式碼

敲一敲:

public class DemoArray {
	public static void main(String[] args) {
		int[] score;//成績
		String[] name;//名字
	}
}
複製程式碼

2.分配空間:告訴計算機分配幾個連續的空間

語法:

陣列名=new 資料型別[大小];
或者 宣告陣列同時並分配空間:
資料型別[] 陣列名=new 資料型別[大小];
複製程式碼

敲一敲:

public class DemoArray {
	public static void main(String[] args) {
		int[] score;//成績
		String[] name;//名字
		score=new int[40];
		name=new String[40];
		//宣告變數同時並分配空間
		int[] age=new int[40];
	}
}
複製程式碼

3.賦值:向分配的空間中放資料

敲一敲:

public class DemoArray {
	public static void main(String[] args) {
		int[] score;//成績
		String[] name;//名字
		score=new int[40];
		name=new String[40];
		//宣告變數同時並分配空間
		int[] age=new int[40];
		name[0]="張三";//向陣列中第一個元素存放資料
		name[1]="李四";//向陣列中第一個元素存放資料
	}
}
複製程式碼

但是這樣一個一個去賦值太麻煩了

敲一敲:1.宣告陣列的同時賦值

public class DemoArray1 {
	public static void main(String[] args) {
		int[] score= {67,55,93};//自動確定長度為3
		String[] name=new String[] {"張三","李四","王五"};
	}
}
複製程式碼

敲一敲:2.使用迴圈從控制檯獲取資訊並賦值

import java.util.Scanner;

public class DemoArray2 {
	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		int[] score=new int[40];
		for (int i = 0; i < score.length; i++) {
			score[i]=input.nextInt();
		}
	}
}
複製程式碼

length 是陣列的屬性,用於獲取陣列的長度

4.處理資料

敲一敲:遍歷陣列

public class DemoEachArray {

	public static void main(String[] args) {
		String[] name= {"香蕉","菠蘿","西瓜"};
		for (int i = 0; i < name.length; i++) {
			String temp=name[i];
			System.out.println(i+" "+temp);
		}
	}
}
複製程式碼

可以列印陣列,也可重新賦值等操作

工具類Arrays

Arrays類包含運算元組的各種方法,使用這個類需要 加入一行程式碼 import java.util.Arrays; 引入後使用。

方法名 說明
sort() 對指定的陣列按數字升序進行排序。
toString() 返回指定陣列內容的字串表示形式。
copyOf() 複製指定的陣列到一個新陣列,並指定新陣列的長度

敲一敲:sort的使用

import java.util.Arrays;

public class DemoArraysSort {
	public static void main(String[] args) {
		int[] ages= {33,18,37,55,3};
		Arrays.sort(ages);
		for(int i=0;i<ages.length;i++) {
			System.out.println(i+" "+ages[i]);
		}
	}
}
複製程式碼

敲一敲:toString的使用

import java.util.Arrays;

public class DemoArraysToString {
	public static void main(String[] args) {
		String[] name= {"張三","李四","王五","趙六"};
		String result=Arrays.toString(name);
		System.out.println(result);
		double[] money= {55.4,34,66,23.3};
		System.out.println(Arrays.toString(money));
	}
}
複製程式碼

敲一敲:copyOf的使用

import java.util.Arrays;

public class DemoArraysCopyOf {
	public static void main(String[] args) {
		int[] ages= {33,18,37,55,3};
		int[] newArray1=Arrays.copyOf(ages, 3);
		System.out.println("新陣列:"+Arrays.toString(newArray1));
		int[] newArray2=Arrays.copyOf(ages,8);
		System.out.println("新陣列:"+Arrays.toString(newArray2));
	}
}
複製程式碼

使用 copyOf() 時,如果指定的副本陣列的長度小於源陣列的長度,後面的元素都將被截斷。如果指定的副本陣列的長度大於源陣列的長度,多出的元素都將使用預設值。

陣列元素預設值

如果一個陣列已經指定了長度,但是沒有給元素賦值,那麼沒有賦值的元素都會有預設值

型別 預設值
String null
int 0
double 0.0
boolean false
Object null

敲一敲:體驗各種型別的預設值

import java.util.Arrays;

public class DemoDefaultValue {
	public static void main(String[] args) {
		String[] name=new String[10];
		System.out.println("字串:"+Arrays.toString(name));
		int[] age=new int[10];
		System.out.println("整數:"+Arrays.toString(age));
		double[] money=new double[10];
		System.out.println("小數:"+Arrays.toString(money));
		Object[] obj=new Object[10];
		System.out.println("物件:"+Arrays.toString(obj));
		boolean[] results=new boolean[10];
		System.out.println("布林值:"+Arrays.toString(results));
		char[] chrs=new char[10];
		System.out.println("字元:"+Arrays.toString(chrs));
		System.out.println((int)chrs[0]);//字元對應的整數
	}
}
複製程式碼

試一試:

1.從控制檯中輸入5個人的年齡,存入陣列中,求出最小的年齡

2.將一組亂序的字元排序後,進行升序和逆序輸出

搜尋關注公眾號「享智同行」,第一時間獲取技術乾貨,公眾號回覆010 獲取本次練習答案!

相關文章