每日一語:路在腳下,夢在遠方,只要一息尚存,就絕不會放棄,
前言:
參考的狂神Java基礎視頻——狂神Java基礎視頻
目錄
陣列概述
1.陣列的定義:
2.陣列的四個基本的特點:
陣列宣告創建
1.宣告陣列:
2.創建陣列
3.記憶體分析
4.三種初始化
靜態初始化
動態初始化
陣列的默認初始化
5.陣列邊界
6.小結
陣列的使用
1.For-Each
2.陣列作為方法傳入
3.陣列做回傳值
多維陣列
1.多維陣列的動態初始化(以二維陣列為例)
2.多維陣列的參考(以二維陣列為例)
3.獲取陣列長度:
Arrays 類
1.列印陣列
2.陣列排序
3.二分查找
4.元素填充
5.陣列轉換為List集合
冒泡排序
陣列概述
1.陣列的定義:
陣列是型別相同的有序集合,
陣列是描述相同型別的若干個資料,按照一定的先后次序排列組合而成,
其中每一個資料稱作陣列元素,可以通過下標來訪問其元素,
2.陣列的四個基本的特點:
1.陣列的長度是確定的,一旦被創建,他的大小就是不能被改變的,
2.其元素型別必須相同,不能出現混合型別,
3.陣列中的元素可以是任何的資料型別,可以是基本型別也可以是參考型別,
4.陣列是參考型別,陣列也可以看作物件,陣列中的成員變數相當于該物件的成員變數,陣列本身就是物件,Java物件是在堆中的,所以陣列無論是保存原始型別還是其他型別,陣列本身就是在堆里,
陣列宣告創建
1.宣告陣列:
dataType[] arrayRefVar; // 首選的方法
或
dataType arrayRefVar[]; // 效果相同,但不是首選方法
double[] myList; // 首選的方法
或
double myList[]; // 效果相同,但不是首選方法
2.創建陣列
Java語言使用new運算子來創建陣列 ,語法如下:
arrayRefVar = new dataType[arraySize];
以上語法做了兩件事:
1.使用dataType[arraySize]創建了一個陣列,
2.把陣列賦值給變數arrayRefVar,
陣列是通過索引訪問的,從0到array.length-1.
獲取陣列的長度語法為:
array.length
【演示創建一個陣列,并賦值和進行訪問】
public class java1 {
public static void main(String[] args) {
int[] nums = new int[5];
nums[0] = 1;
nums[1] = 2;
nums[2] = 3;
nums[3] = 4;
nums[4] = 5;
int sum = 0;
for (int l = 0; l < nums.length; l++) {
sum += l;
}
System.out.println("總和為"+sum);
}
}
結果:

3.記憶體分析
Java記憶體分析:

1.宣告的時候并不會實體化任何物件,只有在實體化陣列物件的時候,JVM才會分配空間,這是才和長度有關,因此宣告陣列的時候不能指定其長度,錯誤示范: int a[5],
2.宣告一個陣列的時候,陣列并沒有被真正的創建,
3.構造一個陣列必須宣告其長度,
//1.宣告一個陣列
int[] myList = null;

//2.創建一個陣列
myList = new int[10];

//3.像陣列中存值
myList[0] = 1;
myList[1] = 2;
myList[2] = 3;
myList[3] = 4;
myList[4] = 5;
myList[5] = 6;
myList[6] = 7;
myList[7] = 8;
myList[8] = 9;
myList[9] = 10;

4.三種初始化
靜態初始化
int[] a = {1,2,3};
Man[] mans = {new Man(1,1),new Man(2,2)};
動態初始化
int[] a = new int[2];
a[0]=1;
a[1]=2;
陣列的默認初始化
public static void main(String[] args) {
int[] a=new int[2];
boolean[] b = new boolean[2];
String[] s = new String[2];
System.out.println(a[0]+":"+a[1]); //0,0
System.out.println(b[0]+":"+b[1]); //false,false
System.out.println(s[0]+":"+s[1]); //null, null
}
5.陣列邊界
下標的合法區間:[0, length-1],如果越界就會報錯;
public static void main(String[] args) {
int[] a=new int[2];
System.out.println(a[2]);
}

6.小結
陣列的使用
1.For-Each
JDK1.5引進了一種新型回圈型別,被稱為For-Each回圈或者加強型回圈,它們在不使用下標的情況下遍歷陣列,
語法格式為:
for(type element: array){
System.out.println(element);
}
【示例】
public static void main(String[] args) {
double[] myList = {1.9, 2.9, 3.4, 3.5}; // 列印所有陣列元素
for (double element: myList) {
System.out.println(element);
}
}
2.陣列作為方法傳入
陣列可以做引數傳遞給方法,
例如下面一個例子就是列印陣列:
public static void printArray(int[] array) {
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
}
3.陣列做回傳值
public static int[] reverse(int[] list) {
int[] result = new int[list.length];
for (int i = 0, j = result.length - 1; i < list.length; i++, j--) {
result[j] = list[i];
}
return result;
}
上述例子中result作為陣列回傳,
多維陣列
多維陣列可以看作是陣列的陣列,比如一個二維陣列就是一個一維陣列組成的一維陣列,
1.多維陣列的動態初始化(以二維陣列為例)
type[][] typeName = new type[typeLength1][typeLength2];
2.多維陣列的參考(以二維陣列為例)
int a[][] = new int[2][3];
其實二維甚至多維陣列十分好理解,我們把兩個或者多個值當做定位就好,
依次理解就可以,
3.獲取陣列長度:
Arrays 類
陣列中的工具類java.util.Arrays,
由于陣列物件本身并沒有什么方法可以供我們呼叫,但API中提供了一個工具類Arrays供我們使用,從
檔案簡介

Arrays類中的方法都是static修飾的靜態方法,在使用的時候可以直接使用類名進行呼叫,而"不用"使用物件來呼叫(注意:是"不用" 而不是 "不能")
java.util.Arrays 類能方便地操作陣列. 使用之前需要導包!
具有一下常用功能:
1.給陣列賦值:通過 fifill 方法,
2.對陣列排序:通過 sort 方法,按升序,
3.比較陣列:通過 equals 方法比較陣列中元素值是否相等,
4.查找陣列元素:通過 binarySearch 方法能對排序好的陣列進行二分查找法操作,
【具體說明請看下表】

1.列印陣列
public class java1 {
public static void main(String[] args) {
int[] nums = new int[5];
nums[0] = 1;
nums[1] = 2;
nums[2] = 3;
nums[3] = 4;
nums[4] = 5;
System.out.println(Arrays.toString(nums));
}
}

2.陣列排序
對指定的 int 型陣列按數字升序進行排序
public class java1 {
public static void main(String[] args) {
int[] nums = new int[5];
nums[0] = 1;
nums[1] = 6;
nums[2] = 55;
nums[3] = 15;
nums[4] = 45;
System.out.println(Arrays.toString(nums));
Arrays.sort(nums);
System.out.println(Arrays.toString(nums));
}
}
輸出:

3.二分查找
在陣列中查找指定元素并回傳其下標
注意:使用二分搜索法來搜索指定的陣列,以獲得指定的值,必須在進行此呼叫之前對陣列進行排序(通過sort方法等),如果沒有對陣列進行排序,則結果是不確定的,
如果陣列包含多個帶有指定值的元素,則無法保證找到的是哪一個,
public class java1 {
public static void main(String[] args) {
int[] nums = new int[5];
nums[0] = 1;
nums[1] = 6;
nums[2] = 55;
nums[3] = 15;
nums[4] = 45;
Arrays.sort(nums);
System.out.println("該元素的索引"+Arrays.binarySearch(nums,45));
}
}
輸出:

4.元素填充
public class java1 {
public static void main(String[] args) {
int[] nums = new int[5];
nums[0] = 1;
nums[1] = 6;
nums[2] = 55;
nums[3] = 15;
nums[4] = 45;
Arrays.sort(nums);
Arrays.fill(nums,2,3,100);
System.out.println(Arrays.toString(nums));
}
}
輸出:
![]()
5.陣列轉換為List集合
List<int[]> list = Arrays.asList(nums);
冒泡排序

public class java1 {
public static void main(String[] args) {
int[] nums = new int[5];
nums[0] = 1;
nums[1] = 6;
nums[2] = 55;
nums[3] = 15;
nums[4] = 45;
int [] b = sort(nums);
System.out.println(Arrays.toString(b));
}
public static int[] sort(int[] nums){
int temp = 0;
for (int i = 0; i<nums.length-1 ; i++) {
for(int j = 0 ; j < nums.length - i-1 ; j++){
if (nums[j] > nums[j+1]){
temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
}
}
}
return nums ;
}
}
輸出:
![]()
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/356621.html
標籤:java
