1. 程式人生 > >Java基礎知識--第五篇

Java基礎知識--第五篇

二維陣列:一維陣列的陣列。

動態初始化方式一(指定有多少個長度相同的一維陣列):
資料型別[][] 變數名 = new 資料型別[m][n];

m表示這個二維陣列有多少個一維陣列

n表示每一個一維陣列的元素個數


動態初始化方式二(指定二維陣列中有多少個一維陣列,每一個一維陣列的長度不固定):
資料型別[][] 變數名 = new 資料型別[m][];


注意:
m這個資料必須給出,後面的資料可以不給

需求:定義一個有3個一維陣列的二維陣列
1.給這個二維陣列的每一個一維陣列的元素賦值
僅可用此種方式:
arr[0] = new int[2];
arr[0][0] = 1;
arr[0][1] = 2;

不能用此種方式:
/*
arr[0] = {1,2};
arr[1] = {5,6,7};
arr[2] = {4};
*/
二維陣列的靜態初始化:
靜態初始化:
資料型別[][] 變數名 = new 資料型別[][]{{元素…},{元素…},{元素…}};


簡化格式:
資料型別[][] 變數名 = {{元素…},{元素…},{元素…}};

        二維陣列的遍歷:一般用兩個for迴圈就可以了

二、形式引數問題
看程式寫結果
class ArgsDemo {
public static void main(String[] args){
int a = 10;
int b = 20;
System.out.println("a:"+a+",b:"+b);  //a:10,b:20
change(a,b);
System.out.println("a:"+a+",b:"+b);//a:10,b:20    a:20,b:40        a:10,b:20 


int[] arr = {1,2,3,4,5};
change(arr);
System.out.println(arr[1]);   //4
}


public static void change(int a,int b) { 
System.out.println("a:"+a+",b:"+b); 
a = b; 
b = a + b; 
System.out.println("a:"+a+",b:"+b);
}


public static void change(int[] arr) { 
for(int x=0; x<arr.length; x++) {
//如果陣列的元素值是偶數,就變為以前的2倍。
if(arr[x]%2==0) {
arr[x]*=2; 
}
}
}
}

結論:
如果形式引數是基本型別:
形式引數的改變,不影響實際引數。
如果形式引數是引用型別:
形式引數的該變,直接影響實際引數。



三、.陣列的高階操作(氣泡排序,選擇排序,陣列工具類,練習)

public class ArraysDemo {
//sort() 對陣列中的元素進行排序
int[] arr = {2,4,1,8,7};
//呼叫方法對陣列進行排序
Arrays.sort(arr);
//列印陣列中的元素
//printArr(arr);

char[] chs = {'c','d','a','e'};
Arrays.sort(chs);
//printArr(chs);

//toString()方法
String s1 = Arrays.toString(arr);
System.out.println(s1);

String s2 = Arrays.toString(chs);
System.out.println(s2);

}
private static void printArr(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]+"\t");
}

}
private static void printArr(char[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]+"\t");
}
}
}



一:氣泡排序
相鄰的兩個元素進行比較,小的放前面,大的放後面

public class maopaoSort {
public static void main(String[] args) {
int[] a={5,9,3,6,1,0};
for (int i = 0; i < a.length-1; i++) {
for (int j = 0; j < a.length-1-i; j++) {
if(a[j]>a[j+1]){
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
for (int k = 0; k < a.length; k++) {
System.out.print(a[k]+"  ");
}

//排一行輸出一行
System.out.println();
}

//一次性排序完輸出
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+"  ");
}
}
}

二:選擇排序:
2.1 選擇排序概念:
* 選擇排序:
* 從0索引開始,依次和後面的每一個元素進行比較
* 第一次比較完畢,最小值出現在了最小索引處
* 第二次比較完畢,次小值出現在了次小索引處
* ...
* 完畢後,就排序了。
public class SelectSort {
public static void main(String[] args) {
int[] a={0,23,15,9,26,7,2};
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+"   ");
}
System.out.println();
System.out.println("*******************************");
for (int i = 0; i < a.length; i++) {
for (int j = i+1; j < a.length; j++) {
if(a[i]>a[j]){
int temp=a[i];
     a[i]=a[j];
     a[j]=temp;
     }
}
for (int k = 0; k < a.length; k++) {
System.out.print(a[k]+"   ");
}
System.out.println();
}
System.out.println();
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+"\t");
}

}


}
三:Arrays陣列工具類
3.1 針對陣列進行操作的工具類。提供了排序,轉換等功能。
3.2 
* 成員方法:
* public static String toString(int[] a):把陣列轉成字串
* public static void sort(int[] a):對陣列進行排序(有過載)