久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      Java學(xué)習(xí)總結(jié)之?dāng)?shù)組(整理分享)

      本篇文章給大家?guī)砹岁P(guān)于java的相關(guān)知識,其中主要介紹了關(guān)于數(shù)組的相關(guān)問題,包括了為什么要使用數(shù)組、數(shù)組的定義、數(shù)組的初始化以及數(shù)組的基本操作等等,希望對大家有幫助。

      Java學(xué)習(xí)總結(jié)之?dāng)?shù)組(整理分享)

      推薦學(xué)習(xí):《java教程》

      一、為什么要使用數(shù)組以及數(shù)組的定義

      1.1 為什么使用數(shù)組

      問題1:

      聲明變量時,每一個單獨的變量都要對應(yīng)一個變量名,但現(xiàn)在要處理一組相同類型的數(shù)據(jù)時,如要表示班上100個人的年齡,絕對不希望定義100個變量來表示每個人的年齡,那怎么辦呢?再看下列例子。

      int age = 17;//表示一個年齡

      問題2:

      求兩個數(shù)之和,需要一個方法,求5個數(shù)之和,需要重載一個方法,求100個數(shù)之和、1000個數(shù)之和、10000個數(shù)之和,方法的參數(shù)列表會很長很長,而且方法得有很多個,而且還得去記住哪個方法是兩個參數(shù)的,哪個方法是三個參數(shù)的。這樣總感覺很不爽,仔細(xì)分析這個功能,其實就是求一組數(shù)值的和而已,這個方法并不在乎具體是多少個加數(shù),它只在乎需要把哪些數(shù)加起來。

      大師的建議:定義方法的形參時,最好不好超過5個。

      1.2 什么是數(shù)組

      簡單來講就是一組數(shù)據(jù),一堆數(shù)據(jù)。所謂數(shù)組是在程序設(shè)計中為了處理方便,把具有相同類型若干變量按有序的形式組織起來的一種數(shù)據(jù)形式。這些按一定順序排列的同類型數(shù)據(jù)的集合稱為數(shù)組。而數(shù)組中的每一個數(shù)據(jù)稱之為數(shù)組元素,數(shù)組中的元素以索引來表示其存放的位置,索引從0開始,步長是1,有點像Excel表格的行號逐行遞增。

      Java學(xué)習(xí)總結(jié)之?dāng)?shù)組(整理分享)

      1.3 數(shù)組的定義

      方式1(推薦使用): 數(shù)組元素的類型[] 數(shù)組名; eg:int[] ages;

      可以把int[]看成是一種數(shù)據(jù)類型,int類型的數(shù)組類型。

      方式2:數(shù)組元素的類型 數(shù)組名[]; eg: int ages[];

      注意:數(shù)組必須先初始化才能使用。因為初始化表示在內(nèi)存中分配空間。

      二、數(shù)組的初始化

      Java中數(shù)組必先初始化后才能使用,所謂初始化就是給數(shù)組元素分配內(nèi)存,并為每個元素賦初始值。

      初始化數(shù)組的兩種方式分為靜態(tài)初始化、動態(tài)初始化;無論以哪種方式初始化數(shù)組一旦初始化完成,數(shù)組的長度就固定了,除非重新初始化。也就是說數(shù)組是定長。

      數(shù)組是定長的:數(shù)組一旦初始化成功,數(shù)組中的元素個數(shù)就已經(jīng)固定了,不能更改。如果需要更改,只能重新做初始化。

      2.1 數(shù)組的靜態(tài)初始化

      由我們自己來為每一個數(shù)組元素設(shè)置初始化值,而數(shù)組的長度由系統(tǒng)(JVM)決定。

      語法:

      數(shù)組元素類型[] 數(shù)組名 = new 數(shù)組元素類型[]{元素1,元素2,元素3,…….};

      舉例:

      int[] nums = new int[]{1,3,5,7,9};

      簡單寫法,必須聲明之后立刻初始化,不能先聲明后初始化; int[] nums = {1,3,5,7,9};

      圖解數(shù)組靜態(tài)初始化操作及重新賦值操作

      Java學(xué)習(xí)總結(jié)之?dāng)?shù)組(整理分享)

      2.2 數(shù)組的動態(tài)初始化

      由我們來設(shè)置數(shù)組的元素個數(shù)(數(shù)組長度),而每一個數(shù)組元素的初始值由系統(tǒng)決定。

      語法:

      數(shù)組元素類型[] 數(shù)組名 = new 數(shù)組元素類型[ length ];

      舉例:

          int[] ages = new  int[ 100 ];

      注意:int[] nums = new int[5]{1,3,5,7,9};//寫法是錯誤的。不能同時使用靜態(tài)初始化和動態(tài)初始化。

      2.3 什么時候使用靜態(tài)初始化,什么時候使用動態(tài)初始化呢?

      當(dāng)我們事先知道需要存儲哪一些數(shù)據(jù)的時候,選用靜態(tài)初始化;

      當(dāng)我們事先不知道,需要存儲哪些數(shù)據(jù)的時候,只能使用動態(tài)初始化;

      Java中給數(shù)據(jù)類型設(shè)定了初始值,如下圖:

      數(shù)據(jù)類型

      初始值

      byte、short、int

      0

      long

      0L

      float

      0F

      double

      0.0D

      boolean

      false

      char

      ’u0000‘ (表示空)

      引用數(shù)據(jù)類型

      null

      三、數(shù)組基本操作(一維數(shù)組)

      3.1 數(shù)組基本操作:

      • 獲取元素: 元素類型 變量 = 數(shù)組名[index];
      • 設(shè)置元素: 數(shù)組名[index] = 值;
      • 遍歷數(shù)組元素: 建議使用for循環(huán),因為for循環(huán)事先知道循環(huán)的次數(shù)
      • 數(shù)組長度: int len = 數(shù)組名.length; length是屬性,不是方法.
      • 索引范圍: 從0開始,逐一遞增。 [0,數(shù)組名.length-1]

      3.2 操作數(shù)組常見異常:

      NullPointerException:空指針異常(空引用)。

      出現(xiàn)該異常的原因:當(dāng)數(shù)組還未初始化,就直接操作數(shù)組

      如以下代碼:

      String[] bs = null;  System.out.println(bs.length)

      ArrayIndexOutOfBoundsException:數(shù)組的索引越界異常。

      出現(xiàn)該異常的原因:根據(jù)索引取出數(shù)據(jù)元素時,輸入了超出數(shù)組索引范圍之外的值。

      如下代碼:

      int[] nums = {1,3,5,7,9};  int a = nums[4];

      3.3 獲取數(shù)組最大最小元素

      /**  * 求數(shù)組最大值  *  * @param nums  * @return  */ public static int getMax(int[] nums) {     int result = 0;     for (int i = 0; i < nums.length; i++) {         int num = nums[i];         if (result < num) {             result = num;         }     }     return result; }  /**  * 求數(shù)據(jù)最小值  *  * @param nums  * @return  */ public static int getMin(int[] nums) {     int result = 0;     for (int i = 0; i < nums.length; i++) {         int num = nums[i];         if (i == 0) {             result = num;         }         if (result > num) {             result = num;         }     }     return result; }

      3.4 打印數(shù)組元素

      當(dāng)我們直接使用System.out.println()打印數(shù)組的時候,打印出來是hashCode值,如

      int[] nums = new int[]{1, 3, 5, 7, 9};  System.out.println(nums);

      Java學(xué)習(xí)總結(jié)之?dāng)?shù)組(整理分享)

      我們不喜歡,我們想打印數(shù)組的時候,把該數(shù)組的元素打印出來,這時需要循環(huán)遍歷打印

      int[] nums = new int[]{1, 3, 5, 7, 9}; for (int i = 0; i < nums.length; i++) {     System.out.print(nums[i] + " "); }

      但是呢,每次想打印數(shù)據(jù)中的元素都還要循環(huán)遍歷一遍,好麻煩啊! 有沒有更好的方式呢?其實不用著急,Java前輩們已經(jīng)幫我們想到了這一點了,我們只需要調(diào)用Arrays.toString()方法就能夠?qū)?shù)組進行打印

      3.5 逆序排列數(shù)組元素

      例子:原數(shù)組[A, B, C, D, E],要求對該數(shù)組進行逆序操作得到新數(shù)組:[E, D, C, B, A]。

      public static String[] reversedOrder(String[] nums) {     String[] result = new String[nums.length];     int index = 0;     for (int i = nums.length - 1; i >= 0; i--) {         result[index] = nums[i];         index++;     }     return result; }

      3.6 線性搜索:元素出現(xiàn)索引(第一次/最后一次)

      數(shù)組的線性搜索指得就是挨個遍歷,查找數(shù)組中與key相同的元素,若查找不到則可以返回-1(慣例,自定義),其效率為O(n)。

      例子:int[] arr = {10,20,30,10,50,-30,10};獲取元素10在arr數(shù)組中第一次出現(xiàn)的索引和最后一次出現(xiàn)的索引

      /**  * 獲取數(shù)組中指定元素第一次出現(xiàn)的索引  *  * @param nums  * @param element  * @return  */ public static int indexOf(int[] nums, int element) {     for (int i = 0; i < nums.length; i++) {         if (element == nums[i]) {             return i;         }     }     return -1; }  /**  * 獲取數(shù)組中指定元素最后一次出現(xiàn)的索引  *  * @param nums  * @param element  * @return  */ public static int lastIndexOf(int[] nums, int element) {     for (int i = nums.length - 1; i >= 0; i--) {         if (element == nums[i]) {             return i;         }     }     return -1; }

      四、多維數(shù)組

      在前面的文章中我們有提到數(shù)組其實就是是多個數(shù)據(jù)的集合。如果現(xiàn)在有多個數(shù)組,我想把多個數(shù)組保存在一個集合中,此時我又應(yīng)該如何完成呢?此時就需要引入多維數(shù)組的概念。多維數(shù)組其實就是把整個數(shù)組看成一個元素,存放到另一個數(shù)組當(dāng)中去。

      多維數(shù)組的語法:

      數(shù)組元素類型[] 數(shù)組名;

      例如如下定義二維數(shù)組的格式

      int[][]  arr = new int[][]   {    arr1 ,arr2,arr3  };  int[][]  arr = new int[][]   {    {1,2,3} ,    {4,5},    {6}  };

      4.1 多維數(shù)組和一維數(shù)組的區(qū)別

      • 一維數(shù)組:數(shù)組中的每一個元素都是一個值(基本類型和引用類型的值);
      • 二維數(shù)組:數(shù)組中的每一個元素又是一個一位數(shù)組;
      • 三維數(shù)組:數(shù)組中的每一個元素又是一個二維數(shù)組;

      注意:嚴(yán)格上說在Java中不存在多維數(shù)組的概念。為了和C語言做區(qū)分一般稱之為數(shù)組中的數(shù)組。

      4.2 二維數(shù)組的初始化操作

      靜態(tài)初始化

      int[][] arr = new int[][] {

      {1,2,3} ,

      {4,5},

      {6}

      };

      動態(tài)初始化

      int[][] arr = new int[3][5] ;//創(chuàng)建一個長度為3的二維數(shù)組,每一個元素(一維數(shù)組)的長度為5。

      針對于N維數(shù)組,需要N個循環(huán)嵌套。

      Java學(xué)習(xí)總結(jié)之?dāng)?shù)組(整理分享)

      五、Java5對數(shù)組的新語法支持

      Java5對數(shù)組的新語法支持主要是增強for循環(huán)(foreach)方法的可變參數(shù)。

      5.1 增強for循環(huán)-foreach

      在之前我們使用for循環(huán)的打印元素操作如下

      int[] nums = new int[]{1, 3, 5, 7, 9}; for (int i = 0; i < nums.length; i++) {     System.out.println(nums[i]); }

      其實我們在使用循環(huán)迭代數(shù)組的時候,往往是不關(guān)心迭代變量(數(shù)組的索引)。那在Java中有沒有更好的方式,在迭代數(shù)組元素的時候就只操作數(shù)組元素,不去操作數(shù)組的索引呢?其實是有的。

      從Java5開始(JDK1.5)開始,Java提供了一種新的語法:增強for循環(huán)(foreach)。

      語法:

      for(數(shù)組元素類型 變量 : 數(shù)組名)

      {

      循環(huán)體

      }

      我們通過反編譯工具查看字節(jié)碼,會發(fā)現(xiàn)foreach其實在底層依然是使用for循環(huán)+索引來操作數(shù)組的。我們把增強for循環(huán)稱之為編譯器的新特性—->語法糖。

      注意:語法糖的最大甜頭就是讓開發(fā)者寫更少、更簡單的代碼,完成相同的功能。當(dāng)我們在迭代數(shù)組元素的時候不關(guān)心數(shù)組的索引的時,首選使用foreach。當(dāng)然咯,foreach遠(yuǎn)遠(yuǎn)沒有本篇博客講解的這么簡單,星仔到時候帶著大家在集合框架篇的時候再深入講解foreach。

      Java學(xué)習(xí)總結(jié)之?dāng)?shù)組(整理分享)

      5.2 方法的可變參數(shù)

      Java5的時候為什么要增加可變參數(shù)呢?我們來看一下以下的需求

      需求:編寫一個方法,統(tǒng)計使用數(shù)組傳遞過來的總和。

      Java學(xué)習(xí)總結(jié)之?dāng)?shù)組(整理分享)

      雖然說也是可以實現(xiàn),但是我們心里肯定是不爽的,主要在于以下幾點:

      • 為了求多個數(shù)之和,我們還得先創(chuàng)建一個數(shù)組來存儲數(shù)據(jù)。
      • 如果多個數(shù)是變化的,比如求3個數(shù)之和變成求5個數(shù)之和…….,還得去修改定義數(shù)組,但是數(shù)組是定長的。

      那如果要解決該問題該怎么辦呢?這個時候就需要引入Java5的另一個新特性:方法的可變參數(shù)(說的是參數(shù)的個數(shù)可變)

      注意:

      • 方法的可變參數(shù)其實也是一個語法糖,是編譯器級別的新特性。主要是為了讓開發(fā)者寫代碼更簡單。
      • 方法的可變參數(shù)其底層是就是一個數(shù)組類型
      • 可變參數(shù)必須作為方法的最后一個參數(shù),避免參數(shù)的歧義性。
      • 一個方法最多只有一個可變參數(shù)。

      Java學(xué)習(xí)總結(jié)之?dāng)?shù)組(整理分享)

      六、數(shù)組元素拷貝

      數(shù)組拷貝:從指定源數(shù)組中復(fù)制一個數(shù)組,復(fù)制從指定的位置開始,到目標(biāo)數(shù)組的指定位置結(jié)束。

      • 從 src 引用的源數(shù)組到 dest 引用的目標(biāo)數(shù)組,數(shù)組組件的一個子序列被復(fù)制下來。
      • 被復(fù)制的組件的編號等于 length 參數(shù)。
      • 源數(shù)組中位置在 srcPos 到 srcPos+length-1 之間的組件被分別復(fù)制到目標(biāo)數(shù)組中的 destPos 到 destPos+length-1 位置。

      數(shù)組拷貝操作是經(jīng)常使用到的,SUN就直接把數(shù)組的拷貝操作存放在JDK中的System類中。

      Java學(xué)習(xí)總結(jié)之?dāng)?shù)組(整理分享)

      Object:Java語言中的根類。是所有類的老祖宗。Object可以表示任意數(shù)據(jù)類型。

      該方法沒有方法體,該方法使用了native修飾符(本地方法)。該方法底層使用了C/C++語言實現(xiàn)了,Java直接調(diào)用其他語言編寫好的功能。

      arraycopy 方法使用方式

      System.arraycopy(src, 2, dest, 5, 4);

      查閱API文檔了(Java的幫助文檔/好比字典),在什么類中有什么功能的方法即可。文檔在手,天下我有!

      Java學(xué)習(xí)總結(jié)之?dāng)?shù)組(整理分享)

      推薦學(xué)習(xí):《java學(xué)習(xí)教程》

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號