前言
Java是一種可以撰寫跨平台應用軟件的面向對象的程序設計語言。Java 技術具有卓越的通用性、高效性、平台移植性和安全性,廣泛應用於PC、數據中心、遊戲控制台、科學超級計算機、流動電話和互聯網,同時擁有全球最大的開發者專業社群。
Java數組詳解
數組的定義
- 數組是相同類型數據的有序集合。
- 數組描述的是相同類型的若干個數據,按照一定的先後次序排列組合而成。
- 其中,每一個數據稱作一個數組元素,每個數組元素可以通過一個下標來訪問它們。
數組聲明創建
首先必須聲明數組變量,才能在程序中使用數組。下面是聲明數組變量的語法:
dataType[] arrayRefVar; //首選的方法
//或
dataType arrayRefVar[]; //效果相同,但不是首選方法
Java語言使用new操作符來創建數組,語法如下:
dataType[] arrayRefVar = new dataType[arraysize];
數組的元素是通過索引訪問的,數組索引從0開始。
獲取數組長度: arrays.length
三種初始化
靜態初始化:
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;
數組的默認初始化:
- 數組是引用類型,它的元素相當於類的實例變量,因此數組一經分配空間,其中的每個元素也被按照實例變量同樣的方式被隱式初始化。
下標越界及小結
數組的四個基本特點:
- 其長度是確定的。數組一旦被創建,它的大小就是不可以改變的。其元素必須是相同類型,不允許出現混合類型。
- 數組中的元素可以是任何數據類型,包括基本類型和引用類型。
- 數組變量屬引用類型,數組也可以看成是對象,數組中的每個元素相當於該對象的成員變量。數組本身就是對象,Java中對象是在堆中的,因此數組無論保存原始類型還是其他對象類型, 數組對象本身是在堆中的 。
數組邊界:
- 下標的合法區間:[0, length-1],如果越界就會報錯;
- ArraylndexOutOfBoundsException:數組下標越界異常!
小結:
- 數組是相同數據類型(數據類型可以為任意類型)的有序集合
- 數組也是對象。數組元素相當於對象的成員變量
- 數組長度的確定的,不可變的。如果越界,則報:ArraylndexOutofBounds
數組的使用
- 普通for循環
- for-each循環
int[] arrays = {1,2,3,4,5};
for(int array : arrays){
System.out.println(array);
}
數組作方法入參
public class Array {
public static void main(String[] args) {
int[] arrays = {1,2,3,4,5};
printArray(arrays);
}
//打印數組元素
public static void printArray(int[] arrays){
for (int i = 0; i < arrays.length; i++) {
System.out.print(arrays[i] + " ");
}
}
}
數組作返回值
public class Array {
public static void main(String[] args) {
int[] arrays = {1,2,3,4,5};
// printArray(arrays);
int[] result = reverse(arrays);
printArray(result);
}
//反轉數組
public static int[] reverse(int[] arrays){
int[] result = new int[arrays.length];
for( int i = 0, j = arrays.length-1 ; i< arrays.length ; i++ , j--){
result[j] = arrays[i];
}
return result;
}
//打印數組元素
public static void printArray(int[] arrays){
for (int i = 0; i < arrays.length; i++) {
System.out.print(arrays[i] + " ");
}
}
}
多維數組
- 多維數組可以看成是數組的數組,比如二維數組就是一個特殊的一維數組,其每一個元素都是一個一維數組。【參考文檔】
- 二維數組
int[][] a = new int[2][5];
解析:以上二維數組a可以看成一個兩行五列的數組。
public class erweiArray {
public static void main(String[] args) {
int[][] arrays = {{1,2},{2,3},{3,4},{4,5}};
//遍歷二維數組
for (int i = 0; i < arrays.length; i++) {
for (int j = 0; j < arrays[i].length; j++) {
System.out.println(arrays[i][j]);
}
}
}
}
Arrays類
- 數組的工具類java.util.Arrays
- 由於數組對象本身並沒有什麼方法可以供我們調用,但API中提供了一個工具類Arrays供我們使用,從而可以對數據對象進行一些基本的操作。
- 查看JDK幫助文檔
- Arrays類中的方法都是static修飾的靜態方法,在使用的時候可以直接使用類名進行調用布”不用”使用對象來調用(注意:是”不用」而不是”不能”)
具有以下常用功能:
- 給數組賦值:通過fill方法。
- 對數組排序:通過sort方法,按升序。
- 比較數組:通過equals方法比較數組中元素值是否相等。
- 查找數組元素:通過binarySearch方法能對排序好的數組進行二分查找法操作。
import java.util.Arrays;
public class ArraysLei {
public static void main(String[] args) {
int[] a = {1,2,3,4,12345,43,12342,98,1243};
Arrays.sort(a); //數組排序:升序
System.out.println(Arrays.toString(a)); //打印數組元素
Arrays.fill(a,2,4,0); //數組填充
System.out.println(Arrays.toString(a));
}
}
冒泡排序
- 冒泡排序無疑是最為出名的排序算法之一,總共有八大排序!

冒泡的代碼還是相當簡單的,兩層循環,外層冒泡輪數,裡層依次比較,江湖中人人盡皆知。我們看到嵌套循環,應該立馬就可以得出這個算法的 時間複雜度為O(n2) 。
import java.util.Arrays;
//冒泡排序:
//1.比較數組中,兩個相鄰的元素,如果第一個數比第二個數大,我們就交換他們的位置;
//2.每一次比較,都會產生出一個最大,或者最小的數字;
//3. 下一輪則可以少一次排序!
//4. 依次循環,直到結束!
public class maopaopaixu {
public static void main(String[] args) {
int[] a = {1,4,5,72,2,2,2,25,6,7};
int[] sort = sort(a); //調用完我們自己寫的排序方法以後,返回一個排序後的數組
System.out.println(Arrays.toString(sort));
}
public static int[] sort(int[] array){
//臨時變量
int temp = 0;
//外層循環,判斷我們這個要走多少次;
for (int i = 0; i < array.length-1; i++) {
//內層循環,比較判斷兩個數,如果第一個數,比第二個數大,則交換位置
for (int j = 0; j < array.length-1-i; j++) {
if (array[j+1]<array[j]){
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
return array;
}
}
Java對象數組的概述和使用
1 public class Student
2 {
3 // 成員變量
4 private String name;
5 private int age;
6
7 // 構造方法
8 public Student()
9 {
10 super();
11 }
12
13 public Student(String name, int age)
14 {
15 super();
16 this.name = name;
17 this.age = age;
18 }
19
20 // 成員方法
21 // getXxx()/setXxx()
22 public String getName()
23 {
24 return name;
25 }
26
27 public void setName(String name)
28 {
29 this.name = name;
30 }
31
32 public int getAge()
33 {
34 return age;
35 }
36
37 public void setAge(int age)
38 {
39 this.age = age;
40 }
41
42 @Override
43 public String toString()
44 {
45 return "Student [name=" + name + ", age=" + age + "]";
46 }
47 }
【參考文檔】
1 /**
2 把5個學生的信息存儲到數組中,並遍曆數組,獲取得到每一個學生信息。
3 * 學生:Student
4 * 成員變量:name,age
5 * 構造方法:無參,帶參
6 * 成員方法:getXxx()/setXxx()
7 * 分析:
8 * A:創建學生類。
9 * B:創建學生數組(對象數組)。
10 * C:創建5個學生對象,並賦值。
11 * D:把C步驟的元素,放到數組中。
12 * E:遍歷學生數組。
13 * */
14
15 public class Practice
16 {
17 public static void main(String[] args)
18 {
19 // 創建學生數組(對象數組)。
20 Student[] students = new Student[5];
21 // for (int x = 0; x < students.length; x++)
22 // {
23 // System.out.println(students[x]);
24 // }
25 // System.out.println("---------------------");
26
27 // 創建5個學生對象,並賦值。
28 Student s1 = new Student("小明", 27);
29 Student s2 = new Student("小紅", 30);
30 Student s3 = new Student("小強", 30);
31 Student s4 = new Student("旺財", 12);
32 Student s5 = new Student("張三", 35);
33
34 // 將對象放到數組中。
35 students[0] = s1;
36 students[1] = s2;
37 students[2] = s3;
38 students[3] = s4;
39 students[4] = s5;
40
41 // 遍歷
42 for (int x = 0; x < students.length; x++)
43 {
44 //System.out.println(students[x]);
45 Student s = students[x];
46 System.out.println(s.getName()+"---"+s.getAge());
47 }
48 }
49 }
對象數組的內存圖解

集合的由來及與數組的區別
集合類的由來:面向對象語言對事物的體現都是以對象的形式,所以為了方便對多個對象的操作,Java就提供了集合類。
數組和集合類同的區別:
數組可以存儲同一種類型的基本數據也可以存儲同一種類型的對象,但長度是固定的
集合只可以存儲不同類型的對象,長度是可變的
集合類的特點:集合只用於存儲對象,集合長度是可變的,集合可以存儲不同類型的對象。
集合的繼承體系圖解
集合容器因為內部的數據結構不同,有多種具體容器,根據共性內容不斷的向上抽取,就形成了集合框架。
框架的頂層Collection接口

Collection集合的功能概述
Collection 層次結構中的根接口。Collection 表示一組對象,這些對象也稱為 collection 的元素。一些 collection 允許有重複的元素,而另一些則不允許。一些 collection 是有序的,而另一些則是無序的。JDK 不提供此接口的任何直接實現:它提供更具體的子接口(如 Set 和 List)實現。此接口通常用來傳遞 collection,並在需要最大普遍性的地方操作這些 collection。
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/268954.html
微信掃一掃
支付寶掃一掃