## 數(shù)組
數(shù)組的概念:
數(shù)組是一個(gè)變量,用來(lái)存放一組相同數(shù)據(jù)類型變量的容器檀葛。
數(shù)組的格式:
* 數(shù)據(jù)類型[ ] 數(shù)組名;
* 數(shù)據(jù)類型 數(shù)組名[ ];
數(shù)組的屬性:通過(guò)arr.length來(lái)表示數(shù)組的長(zhǎng)度玩祟。
數(shù)組異常:
1.下標(biāo)越界。比如如下代碼:
```java
public class Array {
public static void main(String[] args) {
// 聲明數(shù)組
int[] arr =new int[3] ;
//給數(shù)組每一個(gè)元素賦值
arr[0]=6;
arr[1]=12;
arr[2]=26;
arr[3]=3;//數(shù)組的下標(biāo)不在 0~arr.length之間
System.out.println(Arrays.toString(arr));
}
}
```
? 2.空指針屿聋。如下代碼:
```java
public class Array {
public static void main(String[] args) {
//對(duì)象沒(méi)有new,就訪問(wèn)對(duì)象成員
int[] arr2 = null;
System.out.println(arr2[1]); // java.lang.NullPointerException
}
}
```
數(shù)組的初始化
靜態(tài)初始化
格式一: 數(shù)據(jù)類型[ ] 數(shù)組名 = {元素1,元素2,...元素n};
格式二: 數(shù)據(jù)類型[ ] 數(shù)組名 = new int[]{元素1,元素2,...元素n};
動(dòng)態(tài)初始化
數(shù)據(jù)類型[ ] 數(shù)組名 = new 數(shù)據(jù)類型[數(shù)組的大小];
可以采用以下三種方式初始化
1.逐個(gè)初始化
2.通過(guò)鍵盤(pán)輸入
3.通過(guò)隨機(jī)數(shù)初始化
***注意不管是靜態(tài)初始化還是動(dòng)態(tài)初始化空扎,一定在創(chuàng)建的時(shí)候,就指明數(shù) 組的長(zhǎng)度润讥。數(shù)組的長(zhǎng)度一旦確定转锈,就不可以更改。
1.逐個(gè)初始化
```java
public class Array {
public static void main(String[] args) {
int[] arr = new int[3];
arr[0] =10;
arr[1] = 8;
arr[2] = 50;
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
}
}
```
2.通過(guò)鍵盤(pán)輸入
* 舉例:Java考試結(jié)束后楚殿,老師給冰冰分配了一項(xiàng)任務(wù)撮慨,讓他計(jì)算全班(30人)的平均分。
```java
import java.util.Scanner;
public class ArraysDemo01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
double [] score = new double [30];
double sum = 0.0;
double average = 0.0;
for (int i = 0; i < score.length; i++) {
System.out.print("請(qǐng)輸入第" + (i + 1) + "個(gè)學(xué)生成績(jī): ");
score[i] = input.nextDouble();
sum+= score[i];
}
average = sum/score.length;
System.out.println(score.length+"個(gè)學(xué)生成績(jī)的平均分是: "+average);
}
}
```
3.隨機(jī)數(shù)初始化
```java
public class Array {
public static void main(String[] args) {
int[] arr = new int[ ]{10,20,30,40,50};
for (int i = 0; i < arr.length; i++) {
arr[i] = (int) (Math.random() * 10);
}
System.out.println(Arrays.toString(arr));
}
}
```
數(shù)組的遍歷
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
##舉例:有一個(gè)數(shù)列:8脆粥,4砌溺,2,1变隔,23规伐,344,12匣缘,循環(huán)輸出數(shù)列的值猖闪。
```java
public class Array {
public static void main(String[] args) {
int[] arr = {8,4,2,1,23,344,12};
String s = arrayToString(arr);
System.out.println(arrayToString(arr));
}
public static String arrayToString(int[] arr) {
String result = "";
result += "[";
for (int i = 0; i < arr.length; i++) {
if (i == arr.length - 1) {
result += arr[i];
} else {
result += arr[i] + ", ";
}
}
result += "]"
return result;
}
}
```
數(shù)組的最值思想
舉例:有一個(gè)數(shù)列:9,5孵户,1萧朝,10,89夏哭,569检柬,16,求出最大值和最小值。
```java
//求上述數(shù)列的最大值
public class Array {
public static void main(String[] args) {
int[] arr = {9,5,1,10,89,569何址,16};
System.out.println("最大值:" + getMaxValue(arr));
}
? ? public static int getMaxValue(int[] arr) {
// 1.假設(shè)第一個(gè)數(shù)為最大值
int max = arr[0];
// 2.遍歷數(shù)組中的每一個(gè)元素
for (int i = 0; i < arr.length; i++) {
// 獲取到每一個(gè)元素arr[i]
// 3.判斷獲取的元素是否比max大
if (arr[i] > max) {
// 4.設(shè)置arr[i]為最大值
max = arr[i];
}
}
return max;
}
}
```
```java
//求上述數(shù)列的最小值
public class Array {
public static void main(String[] args) {
int[] arr = {9,5,1,10,89,569里逆,16};
System.out.println("最大值:" + getMinValue(arr));
}
? ? public static int getMinValue(int[] arr) {
// 1.假設(shè)第一個(gè)數(shù)為最小值
int min = arr[0];
// 2.遍歷數(shù)組中的每一個(gè)元素
for (int i = 0; i < arr.length; i++) {
// 獲取到每一個(gè)元素arr[i]
// 3.判斷獲取的元素是否比min大
if (arr[i] <max) {
// 4.設(shè)置arr[i]為最小值
min = arr[i];
}
}
return max;
}
}
```
數(shù)組倒置思想
舉例:有一個(gè)數(shù)列:8,4用爪,2原押,1,23偎血,344诸衔,12,將數(shù)組倒置并輸出。
```java
public class Array {
public static void main(String[] args) {
? int[] arr = {8,4,2,1,23,344,12};
? System.out.println("倒置前: " + arrays.toString(arr));
? reverseArray(arr);
? System.out.println("倒置后: " + arrays.toString(arr));
}
public static void reverseArray(int[] arr) {
? for (int i = 0; i < arr.length / 2; i++) {
int temp = 0;
temp = arr[i];
arr[i] = arr[arr.length - 1 - i];
arr[arr.length - 1 - i] = temp;
}
}
```
數(shù)組查找思想
舉例:有一個(gè)數(shù)列:8颇玷,4笨农,2,1帖渠,23谒亦,344,12空郊,數(shù)組查找 猜數(shù)游戲:從鍵盤(pán)中任意輸入一個(gè)數(shù)據(jù)份招,判斷數(shù)列中是否包含此數(shù)。
```java
public class ArrayDemo06 {
public static void main(String[] args) {
int[] arr = {8,4,2,1,23,344,12};
Scanner input = new Scanner(System.in);
? ? int num = input.nextInt();
? ? int index = baiscSearch(arr, num);
System.out.println(index != -1 ? "找到了該數(shù)" + arr[index] : "該數(shù)在數(shù)組中不存在");
}
public static int baiscSearch(int[] arr, int num) {
int index = -1;
for (int i = 0; i < arr.length; i++) {
if (arr[i] == num) {
index = i;
break;
}
}
return index;
}
}
```
數(shù)組排列思想(冒泡排列)
舉例:有一個(gè)數(shù)列:8狞甚,4锁摔,2,1入愧,23鄙漏,344,12棺蛛,數(shù)組排序。
```java
public class ArrayDemo06 {
public static void main(String[] args) {
int[] arr = {8,4,2,1,23,344,12};
bubbleSort(arr);
System.out.println("冒泡排序后: " + arrays.toString(arr));
}
public static void bubbleSort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j+1]) {
int temp = 0;
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
? ? ? }
}
}
}
}
```## 數(shù)組
數(shù)組的概念:
數(shù)組是一個(gè)變量,用來(lái)存放一組相同數(shù)據(jù)類型變量的容器巩步。
數(shù)組的格式:
* 數(shù)據(jù)類型[ ] 數(shù)組名;
* 數(shù)據(jù)類型 數(shù)組名[ ];
數(shù)組的屬性:通過(guò)arr.length來(lái)表示數(shù)組的長(zhǎng)度旁赊。
數(shù)組異常:
1.下標(biāo)越界。比如如下代碼:
```java
public class Array {
public static void main(String[] args) {
// 聲明數(shù)組
int[] arr =new int[3] ;
//給數(shù)組每一個(gè)元素賦值
arr[0]=6;
arr[1]=12;
arr[2]=26;
arr[3]=3;//數(shù)組的下標(biāo)不在 0~arr.length之間
System.out.println(Arrays.toString(arr));
}
}
```
? 2.空指針椅野。如下代碼:
```java
public class Array {
public static void main(String[] args) {
//對(duì)象沒(méi)有new,就訪問(wèn)對(duì)象成員
int[] arr2 = null;
System.out.println(arr2[1]); // java.lang.NullPointerException
}
}
```
數(shù)組的初始化
靜態(tài)初始化
格式一: 數(shù)據(jù)類型[ ] 數(shù)組名 = {元素1,元素2,...元素n};
格式二: 數(shù)據(jù)類型[ ] 數(shù)組名 = new int[]{元素1,元素2,...元素n};
動(dòng)態(tài)初始化
數(shù)據(jù)類型[ ] 數(shù)組名 = new 數(shù)據(jù)類型[數(shù)組的大小];
可以采用以下三種方式初始化
1.逐個(gè)初始化
2.通過(guò)鍵盤(pán)輸入
3.通過(guò)隨機(jī)數(shù)初始化
***注意不管是靜態(tài)初始化還是動(dòng)態(tài)初始化终畅,一定在創(chuàng)建的時(shí)候,就指明數(shù) 組的長(zhǎng)度竟闪。數(shù)組的長(zhǎng)度一旦確定离福,就不可以更改。
1.逐個(gè)初始化
```java
public class Array {
public static void main(String[] args) {
int[] arr = new int[3];
arr[0] =10;
arr[1] = 8;
arr[2] = 50;
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
}
}
```
2.通過(guò)鍵盤(pán)輸入
* 舉例:Java考試結(jié)束后炼蛤,老師給冰冰分配了一項(xiàng)任務(wù)妖爷,讓他計(jì)算全班(30人)的平均分。
```java
import java.util.Scanner;
public class ArraysDemo01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
double [] score = new double [30];
double sum = 0.0;
double average = 0.0;
for (int i = 0; i < score.length; i++) {
System.out.print("請(qǐng)輸入第" + (i + 1) + "個(gè)學(xué)生成績(jī): ");
score[i] = input.nextDouble();
sum+= score[i];
}
average = sum/score.length;
System.out.println(score.length+"個(gè)學(xué)生成績(jī)的平均分是: "+average);
}
}
```
3.隨機(jī)數(shù)初始化
```java
public class Array {
public static void main(String[] args) {
int[] arr = new int[ ]{10,20,30,40,50};
for (int i = 0; i < arr.length; i++) {
arr[i] = (int) (Math.random() * 10);
}
System.out.println(Arrays.toString(arr));
}
}
```
數(shù)組的遍歷
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
##舉例:有一個(gè)數(shù)列:8理朋,4絮识,2绿聘,1,23次舌,344熄攘,12,循環(huán)輸出數(shù)列的值彼念。
```java
public class Array {
public static void main(String[] args) {
int[] arr = {8,4,2,1,23,344,12};
String s = arrayToString(arr);
System.out.println(arrayToString(arr));
}
public static String arrayToString(int[] arr) {
String result = "";
result += "[";
for (int i = 0; i < arr.length; i++) {
if (i == arr.length - 1) {
result += arr[i];
} else {
result += arr[i] + ", ";
}
}
result += "]"
return result;
}
}
```
數(shù)組的最值思想
舉例:有一個(gè)數(shù)列:9挪圾,5,1逐沙,10洛史,89,569酱吝,16也殖,求出最大值和最小值。
```java
//求上述數(shù)列的最大值
public class Array {
public static void main(String[] args) {
int[] arr = {9,5,1,10,89,569务热,16};
System.out.println("最大值:" + getMaxValue(arr));
}
? ? public static int getMaxValue(int[] arr) {
// 1.假設(shè)第一個(gè)數(shù)為最大值
int max = arr[0];
// 2.遍歷數(shù)組中的每一個(gè)元素
for (int i = 0; i < arr.length; i++) {
// 獲取到每一個(gè)元素arr[i]
// 3.判斷獲取的元素是否比max大
if (arr[i] > max) {
// 4.設(shè)置arr[i]為最大值
max = arr[i];
}
}
return max;
}
}
```
```java
//求上述數(shù)列的最小值
public class Array {
public static void main(String[] args) {
int[] arr = {9,5,1,10,89,569忆嗜,16};
System.out.println("最大值:" + getMinValue(arr));
}
? ? public static int getMinValue(int[] arr) {
// 1.假設(shè)第一個(gè)數(shù)為最小值
int min = arr[0];
// 2.遍歷數(shù)組中的每一個(gè)元素
for (int i = 0; i < arr.length; i++) {
// 獲取到每一個(gè)元素arr[i]
// 3.判斷獲取的元素是否比min大
if (arr[i] <max) {
// 4.設(shè)置arr[i]為最小值
min = arr[i];
}
}
return max;
}
}
```
數(shù)組倒置思想
舉例:有一個(gè)數(shù)列:8,4崎岂,2捆毫,1,23冲甘,344绩卤,12,將數(shù)組倒置并輸出。
```java
public class Array {
public static void main(String[] args) {
? int[] arr = {8,4,2,1,23,344,12};
? System.out.println("倒置前: " + arrays.toString(arr));
? reverseArray(arr);
? System.out.println("倒置后: " + arrays.toString(arr));
}
public static void reverseArray(int[] arr) {
? for (int i = 0; i < arr.length / 2; i++) {
int temp = 0;
temp = arr[i];
arr[i] = arr[arr.length - 1 - i];
arr[arr.length - 1 - i] = temp;
}
}
```
數(shù)組查找思想
舉例:有一個(gè)數(shù)列:8江醇,4濒憋,2,1陶夜,23凛驮,344,12条辟,數(shù)組查找 猜數(shù)游戲:從鍵盤(pán)中任意輸入一個(gè)數(shù)據(jù)黔夭,判斷數(shù)列中是否包含此數(shù)。
```java
public class ArrayDemo06 {
public static void main(String[] args) {
int[] arr = {8,4,2,1,23,344,12};
Scanner input = new Scanner(System.in);
? ? int num = input.nextInt();
? ? int index = baiscSearch(arr, num);
System.out.println(index != -1 ? "找到了該數(shù)" + arr[index] : "該數(shù)在數(shù)組中不存在");
}
public static int baiscSearch(int[] arr, int num) {
int index = -1;
for (int i = 0; i < arr.length; i++) {
if (arr[i] == num) {
index = i;
break;
}
}
return index;
}
}
```
數(shù)組排列思想(冒泡排列)
舉例:有一個(gè)數(shù)列:8羽嫡,4本姥,2,1杭棵,23婚惫,344,12,數(shù)組排序辰妙。
```java
public class ArrayDemo06 {
public static void main(String[] args) {
int[] arr = {8,4,2,1,23,344,12};
bubbleSort(arr);
System.out.println("冒泡排序后: " + arrays.toString(arr));
}
public static void bubbleSort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j+1]) {
int temp = 0;
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
? ? ? }
}
}
}
}
```## 數(shù)組
數(shù)組的概念:
數(shù)組是一個(gè)變量,用來(lái)存放一組相同數(shù)據(jù)類型變量的容器鹰祸。
數(shù)組的格式:
* 數(shù)據(jù)類型[ ] 數(shù)組名;
* 數(shù)據(jù)類型 數(shù)組名[ ];
數(shù)組的屬性:通過(guò)arr.length來(lái)表示數(shù)組的長(zhǎng)度。
數(shù)組異常:
1.下標(biāo)越界密浑。比如如下代碼:
```java
public class Array {
public static void main(String[] args) {
// 聲明數(shù)組
int[] arr =new int[3] ;
//給數(shù)組每一個(gè)元素賦值
arr[0]=6;
arr[1]=12;
arr[2]=26;
arr[3]=3;//數(shù)組的下標(biāo)不在 0~arr.length之間
System.out.println(Arrays.toString(arr));
}
}
```
? 2.空指針蛙婴。如下代碼:
```java
public class Array {
public static void main(String[] args) {
//對(duì)象沒(méi)有new,就訪問(wèn)對(duì)象成員
int[] arr2 = null;
System.out.println(arr2[1]); // java.lang.NullPointerException
}
}
```
數(shù)組的初始化
靜態(tài)初始化
格式一: 數(shù)據(jù)類型[ ] 數(shù)組名 = {元素1,元素2,...元素n};
格式二: 數(shù)據(jù)類型[ ] 數(shù)組名 = new int[]{元素1,元素2,...元素n};
動(dòng)態(tài)初始化
數(shù)據(jù)類型[ ] 數(shù)組名 = new 數(shù)據(jù)類型[數(shù)組的大小];
可以采用以下三種方式初始化
1.逐個(gè)初始化
2.通過(guò)鍵盤(pán)輸入
3.通過(guò)隨機(jī)數(shù)初始化
***注意不管是靜態(tài)初始化還是動(dòng)態(tài)初始化,一定在創(chuàng)建的時(shí)候尔破,就指明數(shù) 組的長(zhǎng)度街图。數(shù)組的長(zhǎng)度一旦確定,就不可以更改懒构。
1.逐個(gè)初始化
```java
public class Array {
public static void main(String[] args) {
int[] arr = new int[3];
arr[0] =10;
arr[1] = 8;
arr[2] = 50;
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
}
}
```
2.通過(guò)鍵盤(pán)輸入
* 舉例:Java考試結(jié)束后餐济,老師給冰冰分配了一項(xiàng)任務(wù),讓他計(jì)算全班(30人)的平均分胆剧。
```java
import java.util.Scanner;
public class ArraysDemo01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
double [] score = new double [30];
double sum = 0.0;
double average = 0.0;
for (int i = 0; i < score.length; i++) {
System.out.print("請(qǐng)輸入第" + (i + 1) + "個(gè)學(xué)生成績(jī): ");
score[i] = input.nextDouble();
sum+= score[i];
}
average = sum/score.length;
System.out.println(score.length+"個(gè)學(xué)生成績(jī)的平均分是: "+average);
}
}
```
3.隨機(jī)數(shù)初始化
```java
public class Array {
public static void main(String[] args) {
int[] arr = new int[ ]{10,20,30,40,50};
for (int i = 0; i < arr.length; i++) {
arr[i] = (int) (Math.random() * 10);
}
System.out.println(Arrays.toString(arr));
}
}
```
數(shù)組的遍歷
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
##舉例:有一個(gè)數(shù)列:8絮姆,4,2秩霍,1篙悯,23,344铃绒,12鸽照,循環(huán)輸出數(shù)列的值。
```java
public class Array {
public static void main(String[] args) {
int[] arr = {8,4,2,1,23,344,12};
String s = arrayToString(arr);
System.out.println(arrayToString(arr));
}
public static String arrayToString(int[] arr) {
String result = "";
result += "[";
for (int i = 0; i < arr.length; i++) {
if (i == arr.length - 1) {
result += arr[i];
} else {
result += arr[i] + ", ";
}
}
result += "]"
return result;
}
}
```
數(shù)組的最值思想
舉例:有一個(gè)數(shù)列:9颠悬,5矮燎,1,10赔癌,89诞外,569,16届榄,求出最大值和最小值浅乔。
```java
//求上述數(shù)列的最大值
public class Array {
public static void main(String[] args) {
int[] arr = {9,5,1,10,89,569,16};
System.out.println("最大值:" + getMaxValue(arr));
}
? ? public static int getMaxValue(int[] arr) {
// 1.假設(shè)第一個(gè)數(shù)為最大值
int max = arr[0];
// 2.遍歷數(shù)組中的每一個(gè)元素
for (int i = 0; i < arr.length; i++) {
// 獲取到每一個(gè)元素arr[i]
// 3.判斷獲取的元素是否比max大
if (arr[i] > max) {
// 4.設(shè)置arr[i]為最大值
max = arr[i];
}
}
return max;
}
}
```
```java
//求上述數(shù)列的最小值
public class Array {
public static void main(String[] args) {
int[] arr = {9,5,1,10,89,569铝条,16};
System.out.println("最大值:" + getMinValue(arr));
}
? ? public static int getMinValue(int[] arr) {
// 1.假設(shè)第一個(gè)數(shù)為最小值
int min = arr[0];
// 2.遍歷數(shù)組中的每一個(gè)元素
for (int i = 0; i < arr.length; i++) {
// 獲取到每一個(gè)元素arr[i]
// 3.判斷獲取的元素是否比min大
if (arr[i] <max) {
// 4.設(shè)置arr[i]為最小值
min = arr[i];
}
}
return max;
}
}
```
數(shù)組倒置思想
舉例:有一個(gè)數(shù)列:8,4席噩,2班缰,1,23悼枢,344埠忘,12,將數(shù)組倒置并輸出。
```java
public class Array {
public static void main(String[] args) {
? int[] arr = {8,4,2,1,23,344,12};
? System.out.println("倒置前: " + arrays.toString(arr));
? reverseArray(arr);
? System.out.println("倒置后: " + arrays.toString(arr));
}
public static void reverseArray(int[] arr) {
? for (int i = 0; i < arr.length / 2; i++) {
int temp = 0;
temp = arr[i];
arr[i] = arr[arr.length - 1 - i];
arr[arr.length - 1 - i] = temp;
}
}
```
數(shù)組查找思想
舉例:有一個(gè)數(shù)列:8,4莹妒,2名船,1,23旨怠,344渠驼,12,數(shù)組查找 猜數(shù)游戲:從鍵盤(pán)中任意輸入一個(gè)數(shù)據(jù)鉴腻,判斷數(shù)列中是否包含此數(shù)迷扇。
```java
public class ArrayDemo06 {
public static void main(String[] args) {
int[] arr = {8,4,2,1,23,344,12};
Scanner input = new Scanner(System.in);
? ? int num = input.nextInt();
? ? int index = baiscSearch(arr, num);
System.out.println(index != -1 ? "找到了該數(shù)" + arr[index] : "該數(shù)在數(shù)組中不存在");
}
public static int baiscSearch(int[] arr, int num) {
int index = -1;
for (int i = 0; i < arr.length; i++) {
if (arr[i] == num) {
index = i;
break;
}
}
return index;
}
}
```
數(shù)組排列思想(冒泡排列)
舉例:有一個(gè)數(shù)列:8,4爽哎,2蜓席,1,23课锌,344厨内,12,數(shù)組排序渺贤。
```java
public class ArrayDemo06 {
public static void main(String[] args) {
int[] arr = {8,4,2,1,23,344,12};
bubbleSort(arr);
System.out.println("冒泡排序后: " + arrays.toString(arr));
}
public static void bubbleSort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j+1]) {
int temp = 0;
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
? ? ? }
}
}
}
}
```## 數(shù)組
數(shù)組的概念:
數(shù)組是一個(gè)變量,用來(lái)存放一組相同數(shù)據(jù)類型變量的容器雏胃。
數(shù)組的格式:
* 數(shù)據(jù)類型[ ] 數(shù)組名;
* 數(shù)據(jù)類型 數(shù)組名[ ];
數(shù)組的屬性:通過(guò)arr.length來(lái)表示數(shù)組的長(zhǎng)度。
數(shù)組異常:
1.下標(biāo)越界癣亚。比如如下代碼:
```java
public class Array {
public static void main(String[] args) {
// 聲明數(shù)組
int[] arr =new int[3] ;
//給數(shù)組每一個(gè)元素賦值
arr[0]=6;
arr[1]=12;
arr[2]=26;
arr[3]=3;//數(shù)組的下標(biāo)不在 0~arr.length之間
System.out.println(Arrays.toString(arr));
}
}
```
? 2.空指針丑掺。如下代碼:
```java
public class Array {
public static void main(String[] args) {
//對(duì)象沒(méi)有new,就訪問(wèn)對(duì)象成員
int[] arr2 = null;
System.out.println(arr2[1]); // java.lang.NullPointerException
}
}
```
數(shù)組的初始化
靜態(tài)初始化
格式一: 數(shù)據(jù)類型[ ] 數(shù)組名 = {元素1,元素2,...元素n};
格式二: 數(shù)據(jù)類型[ ] 數(shù)組名 = new int[]{元素1,元素2,...元素n};
動(dòng)態(tài)初始化
數(shù)據(jù)類型[ ] 數(shù)組名 = new 數(shù)據(jù)類型[數(shù)組的大小];
可以采用以下三種方式初始化
1.逐個(gè)初始化
2.通過(guò)鍵盤(pán)輸入
3.通過(guò)隨機(jī)數(shù)初始化
***注意不管是靜態(tài)初始化還是動(dòng)態(tài)初始化,一定在創(chuàng)建的時(shí)候述雾,就指明數(shù) 組的長(zhǎng)度街州。數(shù)組的長(zhǎng)度一旦確定,就不可以更改玻孟。
1.逐個(gè)初始化
```java
public class Array {
public static void main(String[] args) {
int[] arr = new int[3];
arr[0] =10;
arr[1] = 8;
arr[2] = 50;
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
}
}
```
2.通過(guò)鍵盤(pán)輸入
* 舉例:Java考試結(jié)束后唆缴,老師給冰冰分配了一項(xiàng)任務(wù),讓他計(jì)算全班(30人)的平均分黍翎。
```java
import java.util.Scanner;
public class ArraysDemo01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
double [] score = new double [30];
double sum = 0.0;
double average = 0.0;
for (int i = 0; i < score.length; i++) {
System.out.print("請(qǐng)輸入第" + (i + 1) + "個(gè)學(xué)生成績(jī): ");
score[i] = input.nextDouble();
sum+= score[i];
}
average = sum/score.length;
System.out.println(score.length+"個(gè)學(xué)生成績(jī)的平均分是: "+average);
}
}
```
3.隨機(jī)數(shù)初始化
```java
public class Array {
public static void main(String[] args) {
int[] arr = new int[ ]{10,20,30,40,50};
for (int i = 0; i < arr.length; i++) {
arr[i] = (int) (Math.random() * 10);
}
System.out.println(Arrays.toString(arr));
}
}
```
數(shù)組的遍歷
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
##舉例:有一個(gè)數(shù)列:8面徽,4,2匣掸,1趟紊,23,344碰酝,12霎匈,循環(huán)輸出數(shù)列的值。
```java
public class Array {
public static void main(String[] args) {
int[] arr = {8,4,2,1,23,344,12};
String s = arrayToString(arr);
System.out.println(arrayToString(arr));
}
public static String arrayToString(int[] arr) {
String result = "";
result += "[";
for (int i = 0; i < arr.length; i++) {
if (i == arr.length - 1) {
result += arr[i];
} else {
result += arr[i] + ", ";
}
}
result += "]"
return result;
}
}
```
數(shù)組的最值思想
舉例:有一個(gè)數(shù)列:9送爸,5铛嘱,1暖释,10,89墨吓,569球匕,16,求出最大值和最小值帖烘。
```java
//求上述數(shù)列的最大值
public class Array {
public static void main(String[] args) {
int[] arr = {9,5,1,10,89,569亮曹,16};
System.out.println("最大值:" + getMaxValue(arr));
}
? ? public static int getMaxValue(int[] arr) {
// 1.假設(shè)第一個(gè)數(shù)為最大值
int max = arr[0];
// 2.遍歷數(shù)組中的每一個(gè)元素
for (int i = 0; i < arr.length; i++) {
// 獲取到每一個(gè)元素arr[i]
// 3.判斷獲取的元素是否比max大
if (arr[i] > max) {
// 4.設(shè)置arr[i]為最大值
max = arr[i];
}
}
return max;
}
}
```
```java
//求上述數(shù)列的最小值
public class Array {
public static void main(String[] args) {
int[] arr = {9,5,1,10,89,569,16};
System.out.println("最大值:" + getMinValue(arr));
}
? ? public static int getMinValue(int[] arr) {
// 1.假設(shè)第一個(gè)數(shù)為最小值
int min = arr[0];
// 2.遍歷數(shù)組中的每一個(gè)元素
for (int i = 0; i < arr.length; i++) {
// 獲取到每一個(gè)元素arr[i]
// 3.判斷獲取的元素是否比min大
if (arr[i] <max) {
// 4.設(shè)置arr[i]為最小值
min = arr[i];
}
}
return max;
}
}
```
數(shù)組倒置思想
舉例:有一個(gè)數(shù)列:8蚓让,4乾忱,2,1历极,23窄瘟,344,12,將數(shù)組倒置并輸出趟卸。
```java
public class Array {
public static void main(String[] args) {
? int[] arr = {8,4,2,1,23,344,12};
? System.out.println("倒置前: " + arrays.toString(arr));
? reverseArray(arr);
? System.out.println("倒置后: " + arrays.toString(arr));
}
public static void reverseArray(int[] arr) {
? for (int i = 0; i < arr.length / 2; i++) {
int temp = 0;
temp = arr[i];
arr[i] = arr[arr.length - 1 - i];
arr[arr.length - 1 - i] = temp;
}
}
```
數(shù)組查找思想
舉例:有一個(gè)數(shù)列:8蹄葱,4,2锄列,1图云,23,344邻邮,12竣况,數(shù)組查找 猜數(shù)游戲:從鍵盤(pán)中任意輸入一個(gè)數(shù)據(jù),判斷數(shù)列中是否包含此數(shù)筒严。
```java
public class ArrayDemo06 {
public static void main(String[] args) {
int[] arr = {8,4,2,1,23,344,12};
Scanner input = new Scanner(System.in);
? ? int num = input.nextInt();
? ? int index = baiscSearch(arr, num);
System.out.println(index != -1 ? "找到了該數(shù)" + arr[index] : "該數(shù)在數(shù)組中不存在");
}
public static int baiscSearch(int[] arr, int num) {
int index = -1;
for (int i = 0; i < arr.length; i++) {
if (arr[i] == num) {
index = i;
break;
}
}
return index;
}
}
```
數(shù)組排列思想(冒泡排列)
舉例:有一個(gè)數(shù)列:8丹泉,4,2鸭蛙,1摹恨,23,344娶视,12晒哄,數(shù)組排序。
```java
public class ArrayDemo06 {
public static void main(String[] args) {
int[] arr = {8,4,2,1,23,344,12};
bubbleSort(arr);
System.out.println("冒泡排序后: " + arrays.toString(arr));
}
public static void bubbleSort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j+1]) {
int temp = 0;
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
? ? ? }
}
}
}
}
```