java聲明數組的寫法「java怎樣新建一個數組」

前言

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));
    }
}

冒泡排序

  • 冒泡排序無疑是最為出名的排序算法之一,總共有八大排序!
想裝逼?先把Java數組給我玩出花來

冒泡的代碼還是相當簡單的,兩層循環,外層冒泡輪數,裡層依次比較,江湖中人人盡皆知。我們看到嵌套循環,應該立馬就可以得出這個算法的 時間複雜度為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數組給我玩出花來

集合的由來及與數組的區別

集合類的由來:面向對象語言對事物的體現都是以對象的形式,所以為了方便對多個對象的操作,Java就提供了集合類。

數組和集合類同的區別:
數組可以存儲同一種類型的基本數據也可以存儲同一種類型的對象,但長度是固定的

集合只可以存儲不同類型的對象,長度是可變的
集合類的特點:集合只用於存儲對象,集合長度是可變的,集合可以存儲不同類型的對象。

集合的繼承體系圖解

集合容器因為內部的數據結構不同,有多種具體容器,根據共性內容不斷的向上抽取,就形成了集合框架。

框架的頂層Collection接口

想裝逼?先把Java數組給我玩出花來

Collection集合的功能概述

Collection 層次結構中的根接口。Collection 表示一組對象,這些對象也稱為 collection 的元素。一些 collection 允許有重複的元素,而另一些則不允許。一些 collection 是有序的,而另一些則是無序的。JDK 不提供此接口的任何直接實現:它提供更具體的子接口(如 Set 和 List)實現。此接口通常用來傳遞 collection,並在需要最大普遍性的地方操作這些 collection。

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/268954.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-16 13:12
下一篇 2024-12-16 13:12

相關推薦

發表回復

登錄後才能評論