工作小驛

          Ninja!

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            103 Posts :: 0 Stories :: 36 Comments :: 0 Trackbacks
          1.關(guān)于數(shù)組的特點(diǎn)

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

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

          3)容器類只能保存對(duì)象的引用。而數(shù)組既可以創(chuàng)建為直接保存基本類型,也可以保存對(duì)象的引用。在容器中可以使用包裝類,如Integer、Double等來實(shí)現(xiàn)保存基本數(shù)據(jù)類型值。

          4)對(duì)象數(shù)組和基本類型數(shù)組在使用上幾乎是相同的;唯一的區(qū)別是對(duì)象數(shù)組保存的是引用,基本類型數(shù)組保存基本類型的值。

          2.關(guān)于數(shù)組定義

          1)數(shù)組在定義時(shí),不能分配空間。只有定義完后,可以給數(shù)組分配空間。

          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)可以這樣定義二維數(shù)組。

          int [][] num;

          //or

          num=new int[3][];

          num[0]=new int[5];

          num[1]=new int[3];

          num[2]=new int[2];

          3)二維數(shù)組賦初值。


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


          3.關(guān)于數(shù)組初始化

          對(duì)象數(shù)組在創(chuàng)建之初會(huì)自動(dòng)初始化成null,由原始數(shù)據(jù)類型構(gòu)成的數(shù)組會(huì)自動(dòng)初始化成零(針對(duì)數(shù)值類型),(Char)0 (針對(duì)字符類型)或者false (針對(duì)布爾類型)。

          4.?dāng)?shù)組有關(guān)引用的問題

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

          int[] a2;

          a2 = a1;//這里只是復(fù)制了一個(gè)引用

          看以下代碼:


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


          結(jié)果:

          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

          數(shù)組a1和a2始終在操作同一個(gè)對(duì)象。

          5.關(guān)于數(shù)組的相關(guān)操作

          1)在Java中,所有的數(shù)組都有一個(gè)缺省的屬性length,用于獲取數(shù)組中元素的個(gè)數(shù)。

          2)數(shù)組的復(fù)制:System.arraycopy()。

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

          4)在已排序的數(shù)組中查找某個(gè)元素:Arrays.binarySearch()。

          6.關(guān)于數(shù)組的排序操作

          1)對(duì)象數(shù)組排序,必須實(shí)現(xiàn)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]);
          }
          }
          }


          結(jié)果:

          number=1,name=zhangsan

          number=2,name=lisi

          number=3,name=wangwu

          2)以num為第一關(guān)鍵字,name為第二關(guān)鍵字排序


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


          結(jié)果:

          number=1,name=zhangsan

          number=2,name=lisi

          number=3,name=mybole

          number=3,name=wangwu

          7.關(guān)于java.util.Arrays

          1)java.util.Class Arrays’s architecture

          java.lang.Object

          |

          +--java.util.Arrays

          2)說明

          這個(gè)類提供的基本上都是靜態(tài)方法,用戶進(jìn)行數(shù)組操作,binarySearch():數(shù)組中特定元素的尋找,equals():比較兩個(gè)數(shù)組是否相等(在相同位置上的元素是否相等),fill():數(shù)組填充,sort():數(shù)組排序
          posted on 2007-09-20 15:56 王君 閱讀(469) 評(píng)論(0)  編輯  收藏 所屬分類: J2SE
          主站蜘蛛池模板: 册亨县| 永州市| 清徐县| 四会市| 克拉玛依市| 新蔡县| 康乐县| 海淀区| 罗平县| 平凉市| 诸城市| 远安县| 三门峡市| 治县。| 昭平县| 洛阳市| 陇西县| 观塘区| 湄潭县| 高安市| 海宁市| 乐东| 武鸣县| 义乌市| 安平县| 咸宁市| 伊春市| 兴业县| 日喀则市| 玉林市| 民勤县| 辽宁省| 陇南市| 澳门| 肥西县| 大名县| 上饶县| 三亚市| 靖西县| 进贤县| 洪泽县|