一維數組
概述
- 顧名思義,數組是數據的組合,不止一個數據,有很多數據,數組是引用類型變量
- 數組的初始化,java中數組必須進行初始化才能使用,爲數組中的數組元素分配內存空間,併爲每個數組元素賦初始值。
初始化
靜態初始化
int[] arr = new int[]{1,2,3};
int[] arr = {1,2,3};
動態初始化
int[] arr = new int[3];
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
數組的使用
通過下標訪問指定元素
注意:
1、java語言的數組索引(下標、角標)是從0開始;
2、不要超出索引的範圍,如果超出索引範圍會出現java.lang.ArrayIndexOutOfBoundsException
獲取數組元素的個數
在java中,所有數組提供length屬性,通過這個屬性可以訪問到數組的長度或者數組中元素的個數
數組的排序
package waking.test.arrays;
public class Demo01 {
public static void main(String[] args) {
int[] arr = new int[] {1,3,5,7,2,8,9,32,11,45};
for(int i=0;i<arr.length-1;i++) {
for(int j=0;j<arr.length-i-1;j++) {
if(arr[j]>arr[j+1]) {
int temp = arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+",");
}
}
}
package waking.test.arrays;
public class Demo02 {
public static void main(String[] args) {
int[] arr = new int[] {1,2,12,4,5,3,7,9,54,56,34};
for (int i = 0; i < arr.length-1; i++) {
for (int j = i+1; j < arr.length; j++) {
if(arr[i]>arr[j]) {
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
for (int i= 0; i< arr.length; i++) {
System.out.println(arr[i]);
}
}
}
數組的查找
package waking.test.arrays;
public class Demo03 {
public static void main(String[] args) {
int[] arr = new int[] {1,5,6,7,8,9,10,22,56};
int key = 10;
int left = -1;
int right = arr.length-1;
while(left<right) {
int middle =(left+right)/2;
if(key>arr[middle]) {
left=middle+1;
}else if(key<arr[middle]){
right=middle-1;
}else {
System.out.println(middle);
break;
}
}
}
}
Arrays工具類
- Arrays工具類有非常多的方法對數組進行操控,可以參考API
- 簡單介紹幾個常用方法
作用:主要用於對數組進行排序,查找,填充,比較等的操作
Arrays工具類存在於java.util包下,所以使用的第一步就是導包:import java.util.Arrays;
package waking.test.arrays;
import java.util.Arrays;
public class Demo04 {
public static void main(String[] args) {
int[] arr = {1,32,5,6,2,7,8,9,10};
binarySearch(7, arr);
sort(arr);
copy(arr);
fill(arr);
toStrings(arr);
}
public static void binarySearch(int key,int[] arr) {
Arrays.sort(arr);
int search = Arrays.binarySearch(arr, key);
System.out.println("您想要查找的數在"+search);
}
public static void sort(int[] arr) {
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
}
public static void copy(int[] arr) {
int[] newcopy = Arrays.copyOf(arr, arr.length);
System.out.println(Arrays.toString(newcopy));
}
public static void fill(int[] arr) {
Arrays.fill(arr, 10);
System.out.println(Arrays.toString(arr));
}
public static void toStrings(int[] arr) {
System.out.println(Arrays.toString(arr));
}
}
這裏簡單介紹方法的傳遞
根據有沒有參數:1.無參方法 2.有參方法
根據有沒有返回值:1.無返回值 2.有返回值
組合成四種方式:無參無返回值,無參有返回值,有參無返回值,有參有返回值
二維數組
- 概念:其實就是數組的嵌套,可以簡單理解爲二維矩陣
- 二維數組同樣有初始化:靜態初始化和動態初始化
靜態初始化
int[][] arr = new int[][]{{1,2,3},{4,5,6}};
int[][] arr = {{1,2,3},{4,5,6}};
動態初始化
int[][] arr = new int[2][2];
arr[0][0] = 1;
arr[0][1] = 2;
arr[1][0] = 3;
arr[1][1] = 4;
package waking.test.arrays;
public class Demo05 {
public static void main(String[] args) {
int[][] arr = {{1,2},{3,4},{5,6}};
System.out.println(arr.length);
}
}