數組是用來保存一組相同類型數據的數據結構
數組屬於引用類型
數組中的元素可以是基本數據類型也可以是引用數據類型。
注意:
數組中存放的數據一定是相同的類型。
2.一維數組的聲明和創建語法:
數據類型[]數組名稱 或者 數據類型 數組名稱[];
例如:
int[]num;
int num[];
注意:
在聲明數組時,不能指明數組的大小。因爲在聲明數組階段,數組還並未真正的存在。
數組的創建:
在Java中使用new關鍵字創建數組,語法:
數組名稱=new 數據類型[指定數組存放數據的個數];
語法2:
數據類型[]數組名稱=new 數據類型[指定數組存放數據的個數];
注意:一旦創建數組,就無法更改數組的大小。
示例:
/**
數組的聲明和創建
*/
public class Test1{
public static void main(String[]args){
//先聲明後創建
int num[];
int[]num1;
num=new int[5];
num1=new int[10];
//邊聲明邊創建
int[]num2=new int[5];
//靜態賦值
int[]num3={1,2,3};
//動態賦值
num[0]=10;
num[1]=20;
num[2]=30;
num[3]=40;
num[4]=50;
//根據下標取值
System.out.println(num3[0]+" "+num3[1]+" "+num3[2]);
System.out.println(num[0]+" "+num[1]+" "+num[2]+" "+num[3]+" "+num[4]);
System.out.println(num.length);
for(int i=0;i<num.length;i++){
System.out.println(num[i]);
}
String[]str={"abc","zhangsan"};
for(int i=0;i<str.length;i++){
System.out.println(str[i]);
}
}
}
1.靜態賦值:在定義數組的同時就爲數組元素分配空間並賦值
語法:
數據類型[]數組名稱={數據1,數據2,...};
例如: int[]num={1,2,3};
語法:
數據類型[]數組名稱=new 數據類型[]{數據1,數據2,...};
2.動態賦值:就是先創建數組,然後給據數組的下標進行賦值。
數組的下標是從0開始的。
通過length屬性可以獲取數組的長度,語法:
數組名稱.length
數組下標取值的範圍是數組長度-1;
4.增強的for循環
語法:
for(數據類型 變量名稱:數組名稱或集合名稱){
}
缺陷:
遍歷數組或集合時無法訪問索引(下標)值
用途:
只適合遍歷顯示數組或集合中元素的內容。
示例:
/**
增強的for循環
*/
public class Test2{
public static void main(String[]args){
int []num={1,2,3,4,5,6};
for(int a:num){
System.out.println(a);
}
}
}
Java程序的入口方法main 方法,帶有String[] args參數。這個參數表示main方 法接收了一個字符串數組,也就是命令行參數。
使用:
在使用java命令時,在類名的後面進行參數傳遞,多個參數用空格隔開。
示例:
/**
命令行參數 示例
*/
public class Test3{
public static void main(String[]args){
for(int i=0;i<args.length;i++){
System.out.println(args[i]);
}
}
}
原理:可以利用數組中的某個元素和數組中其他元素進行循環對比。
7.Arrays數組排序
數組中元素可以直接利用java.util.Arrays類,java.util包中提供了許多存儲 數據的結構和方法。Arrays類提供了許多方法操作數組,如:排序,查找等方法。
Arrays類中的sort()方法就是用來對數組進行升序排列的方法。
示例:
/**
Arrays類 示例
*/
import java.util.Arrays;
public class Test7{
public static void main(String[]args){
int []num={30,2,10,8,69,11,1};
//排序
Arrays.sort(num);
//for(int i=0;i<num.length;i++){
// System.out.println(num[i]);
//}
for(int i=num.length-1;i>=0;i--){
System.out.println(num[i]);
}
}
}
通過System類中的arraycopy()方法實現數組的複製。
arraycopy(arg1,arg2,arg3,arg4,arg5)方法中需要傳遞五個參數
arg1表示:源數組
arg2表示:從源數組的哪個位置開始複製
arg3表示:目標數組
arg4表示:把複製的元素從目標數組哪個位置開始存放
arg5表示:要複製的數組元素的數量
示例:
/**
編寫一個程序,能夠實現對數組的複製。
int[]num={1,2,3,4,5};
*/
public class Test8{
public static void main(String[]args){
int[]num={1,2,3,4,5};
int[]num1=new int[num.length];
//for(int i=0;i<num.length;i++){
// num1[i]=num[i];
//}
System.arraycopy(num,0,num1,0,num.length);
for(int a:num1){
System.out.println(a);
}
}
}
綜合例題
例題:
/**
用鍵盤輸入10個學員的成績並計算總成績和平均成績
對輸入的數進行升序排列
*/
import java.util.Scanner;
public class Test5{
public static void main(String[]args){
Scanner s=new Scanner(System.in);
double []score=new double[10];
double sum=0;
for(int i=0;i<score.length;i++){
System.out.println("請輸入第"+(i+1)+"個成績:");
score[i]=s.nextDouble();
sum+=score[i];
}
double max=score[0];
double min=score[0];
for(int i=0;i<score.length;i++){
if(max<score[i]){
max=score[i];
}
if(min>score[i]){
min=score[i];
}
}
System.out.println("總成績:"+sum);
System.out.println("平均成績:"+(sum/score.length));
System.out.println("最大值:"+max);
System.out.println("最小值:"+min);
}
}