新手入門:Java數組特點及基本提示

來源:互聯網
上載者:User
技巧|數組

1.關於數組的特點

1)在Java中,無論使用數組或容器,都有邊界檢查。如果越界操作就會得到一個RuntimeException異常。

2)數組只能儲存特定類型。數組可以儲存基本類型,容器則不能。容器不以具體的類型來處理對象,它們將所有對象都按Object類型處理。

3)容器類只能儲存對象的引用。而數組既可以建立為直接儲存基本類型,也可以儲存對象的引用。在容器中可以使用封裝類,如Integer、Double等來實現儲存基礎資料型別 (Elementary Data Type)值。

4)對象數組和基本類型數組在使用上幾乎是相同的;唯一的區別是對象數組儲存的是引用,基本類型數組儲存基本類型的值。

2.關於數組定義

1)數組在定義時,不能分配空間。只有定義完後,可以給數組分配空間。

int num[];

num=new int[3];

int num[]=new int[3];

注意

int [] num=new int[]{1,2,3}; //ok

int [] num=new int[3]{1,2,3}; //error;

2)可以這樣定義二維數組。

int [][] num;

//or

num=new int[3][];

num[0]=new int[5];

num[1]=new int[3];

num[2]=new int[2];

3)二維數組賦初值。

int [][] num=new int[][]{1,2,3,4,5,5};         //errorint [][] num=new int[][]{{1,2,3},{4,5,5}};  //okint [][] num=new int[2][]{{1,2,3},{4,5,5}};       //errorint [][] num={{1,2,3},{4,5,6}};          //ok

3.關於數組初始化

對象數組在建立之初會自動初始化成null,由未經處理資料類型構成的數組會自動初始化成零(針對數實值型別),(Char)0 (針對字元類型)或者false (針對布爾類型)。

4.數組有關引用的問題

int[] a1 = { 1, 2, 3, 4, 5 };

int[] a2;

a2 = a1;//這裡只是複製了一個引用

看以下代碼:

public class Arrays {    public static void main(String[] args) {       int[] a1 = { 1, 2, 3, 4, 5 };       for (int i = 0; i < a1.length; i++)           System.out.println("a1[" + i + "] = " + a1[i]);       int[] a2;       a2 = a1;       for (int i = 0; i < a2.length; i++)           a2[i]++;       System.out.println("-----after change a2------");       for (int i = 0; i < a1.length; i++)           System.out.println("a1[" + i + "] = " + a1[i]);       System.out.println("-----after change a2[0]------");       a2[0] = 333;       System.out.println("a2[0]=" + a2[0]);       System.out.println("a1[0]=" + a1[0]);       System.out.println("----- a2------");       for (int i = 0; i < a2.length; i++)           System.out.println("a2[" + i + "] = " + a2[i]);    }}

結果:

a1[0] = 1

a1[1] = 2

a1[2] = 3

a1[3] = 4

a1[4] = 5

-----after change a2------

a1[0] = 2

a1[1] = 3

a1[2] = 4

a1[3] = 5

a1[4] = 6

-----after change a2[0]------

a2[0]=333

a1[0]=333

----- a2------

a2[0] = 333

a2[1] = 3

a2[2] = 4

a2[3] = 5

a2[4] = 6

數組a1和a2始終在操作同一個對象。

5.關於數組的相關操作

1)在Java中,所有的數組都有一個預設的屬性length,用於擷取數組中元素的個數。

2)數組的複製:System.arraycopy()。

3)數組的排序:Arrays.sort()。

4)在已排序的數組中尋找某個元素:Arrays.binarySearch()。

6.關於數組的排序操作

1)對象數組排序,必須實現Comparable介面。

import java.util.Arrays;class Student implements Comparable {    int num;    String name;     Student(int num, String name) {       this.num = num;       this.name = name;    }     public String toString()// 重寫toString()方法,以便main:System.out.println(ss[i]);    {       return "number=" + num + "," + "name=" + name;    }     public int compareTo(Object o) {       Student s = (Student) o;       return num > s.num ? 1 : (num == s.num ? 0 : -1);    }} class ArrayTest {    public static void main(String[] args) {       Student[] ss = new Student[] { new Student(1, "zhangsan"),              new Student(2, "lisi"), new Student(3, "wangwu") };       Arrays.sort(ss);       for (int i = 0; i < ss.length; i++) {           System.out.println(ss[i]);       }    }}

結果:

number=1,name=zhangsan

number=2,name=lisi

number=3,name=wangwu

2)以num為第一關鍵字,name為第二關鍵字排序

import java.util.Arrays; class Student implements Comparable {    int num;    String name;     Student(int num, String name) {       this.num = num;       this.name = name;    }     public String toString() {       return "number=" + num + "," + "name=" + name;    }     public int compareTo(Object o) {       Student s = (Student) o;       int result = num > s.num ? 1 : (num == s.num ? 0 : -1);       if (0 == result) {           result = name.compareTo(s.name);       }       return result;    }} class ArrayTest {    public static void main(String[] args) {       Student[] ss = new Student[] { new Student(1, "zhangsan"),              new Student(2, "lisi"), new Student(3, "wangwu"),              new Student(3, "mybole") };       Arrays.sort(ss);       for (int i = 0; i < ss.length; i++) {           System.out.println(ss[i]);       }    }}

結果:

number=1,name=zhangsan

number=2,name=lisi

number=3,name=mybole

number=3,name=wangwu

7.關於java.util.Arrays

1)java.util.Class Arrays’s architecture

java.lang.Object

|

+--java.util.Arrays

2)說明

這個類提供的基本上都是靜態方法,使用者進行數組操作,binarySearch():數組中特定元素的尋找,equals():比較兩個數組是否相等(在相同位置上的元素是否相等),fill():數組填充,sort():數組排序。



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.