gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網
最全最豐富的資訊網站

Java學習總結之數組(整理分享)

本篇文章給大家帶來了關于java的相關知識,其中主要介紹了關于數組的相關問題,包括了為什么要使用數組、數組的定義、數組的初始化以及數組的基本操作等等,希望對大家有幫助。

Java學習總結之數組(整理分享)

推薦學習:《java教程》

一、為什么要使用數組以及數組的定義

1.1 為什么使用數組

問題1:

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

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

問題2:

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

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

1.2 什么是數組

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

Java學習總結之數組(整理分享)

1.3 數組的定義

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

可以把int[]看成是一種數據類型,int類型的數組類型。

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

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

二、數組的初始化

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

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

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

2.1 數組的靜態初始化

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

語法:

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

舉例:

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

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

圖解數組靜態初始化操作及重新賦值操作

Java學習總結之數組(整理分享)

2.2 數組的動態初始化

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

語法:

數組元素類型[] 數組名 = new 數組元素類型[ length ];

舉例:

    int[] ages = new  int[ 100 ];

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

2.3 什么時候使用靜態初始化,什么時候使用動態初始化呢?

當我們事先知道需要存儲哪一些數據的時候,選用靜態初始化

當我們事先不知道,需要存儲哪些數據的時候,只能使用動態初始化

Java中給數據類型設定了初始值,如下圖:

數據類型

初始值

byte、short、int

0

long

0L

float

0F

double

0.0D

boolean

false

char

’u0000‘ (表示空)

引用數據類型

null

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

3.1 數組基本操作:

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

3.2 操作數組常見異常:

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

出現該異常的原因:當數組還未初始化,就直接操作數組

如以下代碼:

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

ArrayIndexOutOfBoundsException:數組的索引越界異常。

出現該異常的原因:根據索引取出數據元素時,輸入了超出數組索引范圍之外的值。

如下代碼:

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

3.3 獲取數組最大最小元素

/**  * 求數組最大值  *  * @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; }  /**  * 求數據最小值  *  * @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 打印數組元素

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

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

Java學習總結之數組(整理分享)

我們不喜歡,我們想打印數組的時候,把該數組的元素打印出來,這時需要循環遍歷打印

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

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

3.5 逆序排列數組元素

例子:原數組[A, B, C, D, E],要求對該數組進行逆序操作得到新數組:[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 線性搜索:元素出現索引(第一次/最后一次)

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

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

/**  * 獲取數組中指定元素第一次出現的索引  *  * @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; }  /**  * 獲取數組中指定元素最后一次出現的索引  *  * @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; }

四、多維數組

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

多維數組的語法:

數組元素類型[] 數組名;

例如如下定義二維數組的格式

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

4.1 多維數組和一維數組的區別

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

注意:嚴格上說在Java中不存在多維數組的概念。為了和C語言做區分一般稱之為數組中的數組

4.2 二維數組的初始化操作

靜態初始化

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

{1,2,3} ,

{4,5},

{6}

};

動態初始化

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

針對于N維數組,需要N個循環嵌套。

Java學習總結之數組(整理分享)

五、Java5對數組的新語法支持

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

5.1 增強for循環-foreach

在之前我們使用for循環的打印元素操作如下

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

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

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

語法:

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

{

循環體

}

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

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

Java學習總結之數組(整理分享)

5.2 方法的可變參數

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

需求:編寫一個方法,統計使用數組傳遞過來的總和。

Java學習總結之數組(整理分享)

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

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

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

注意:

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

Java學習總結之數組(整理分享)

六、數組元素拷貝

數組拷貝:從指定源數組中復制一個數組,復制從指定的位置開始,到目標數組的指定位置結束。

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

數組拷貝操作是經常使用到的,SUN就直接把數組的拷貝操作存放在JDK中的System類中

Java學習總結之數組(整理分享)

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

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

arraycopy 方法使用方式

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

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

Java學習總結之數組(整理分享)

推薦學習:《java學習教程》

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
黄色片免费网址| 日本高清久久久| 肉色超薄丝袜脚交| 男人女人黄一级| 日韩在线一级片| 久久人妻无码一区二区| 91网址在线观看精品| 国产91色在线观看| 久久精品一区二| 无码无遮挡又大又爽又黄的视频| 美女扒开大腿让男人桶| 欧美中文字幕在线观看视频| 四虎4hu永久免费入口| 国产手机视频在线观看| av电影一区二区三区| 亚洲欧美一区二区三区不卡| 国产美女视频免费看| 毛片毛片毛片毛| 99九九99九九九99九他书对| 亚洲男人天堂av在线| 亚洲免费在线播放视频| www.日本一区| 午夜一级免费视频| 午夜啪啪福利视频| a级黄色小视频| 女人天堂av手机在线| 日韩中文字幕二区| 在线观看免费视频高清游戏推荐| 亚洲综合在线网站| 天天干天天色天天干| 国产精品一二三在线观看| 波多野结衣与黑人| av在线播放亚洲| 国产精品乱码久久久久| 激情黄色小视频| www国产免费| 日韩中文字幕三区| 婷婷免费在线观看| 日本福利视频在线观看| 1024av视频| 波多野结衣天堂| 波多野结衣网页| 欧美日韩精品在线一区二区| 毛葺葺老太做受视频| 午夜啪啪免费视频| 久久国产精品网| 亚洲美女爱爱视频| 国产高清不卡无码视频| 人妻内射一区二区在线视频 | 日本三区在线观看| 免费观看黄色的网站| 无码播放一区二区三区| 日本中文字幕观看| 精品无码一区二区三区在线| 日本xxxx黄色| 青青草综合视频| 成人性生生活性生交12| 免费裸体美女网站| 日韩成人av免费| avav在线看| 青青草综合在线| 国产三级国产精品国产专区50| 日本老太婆做爰视频| 国产一级特黄a大片免费| 嫩草影院中文字幕| 午夜免费福利视频在线观看| 成人午夜免费在线| 国产精品久久成人免费观看| 国产成人无码av在线播放dvd| 今天免费高清在线观看国语| 久久久久国产一区| 日本a视频在线观看| 熟妇熟女乱妇乱女网站| aa免费在线观看| 男人天堂手机在线视频| 少妇高潮流白浆| 一级片视频免费观看| 欧美黄色免费影院| 久久国产精品视频在线观看| 色偷偷中文字幕| 在线看免费毛片| 欧美三级理论片| 99福利在线观看| 很污的网站在线观看| 黄色影视在线观看| 亚洲国产日韩欧美在线观看| 日本xxxxxxx免费视频| 每日在线更新av| 精品久久一二三| 国产天堂视频在线观看| 日韩视频 中文字幕| www国产免费| 日韩一级片一区二区| 草草草视频在线观看| 亚洲色图都市激情| 国产一级大片免费看| bt天堂新版中文在线地址| 日韩视频在线免费播放| 中国黄色录像片| 裸体裸乳免费看| 日本一本草久p| www.欧美黄色| 蜜臀av色欲a片无码精品一区| 欧美交换配乱吟粗大25p| 9色视频在线观看| 97超碰国产精品| 成人在线免费观看av| 91看片就是不一样| 黄色小视频免费网站| 艳母动漫在线观看| 草b视频在线观看| 霍思燕三级露全乳照| 欧美aⅴ在线观看| 超碰在线97免费| 污免费在线观看| 国产日韩亚洲欧美在线| 欧美 国产 综合| 国产wwwxx| 裸体裸乳免费看| 丰满少妇久久久| jizzzz日本| 成年在线观看视频| 北条麻妃69av| 在线免费观看视频黄| 日韩人妻一区二区三区蜜桃视频| 国产九色porny| 十八禁视频网站在线观看| 国产成人在线综合| www精品久久| 激情黄色小视频| 国产一二三区在线播放| 国产成人综合一区| 午夜影院免费版| 国产最新免费视频| 日本福利视频导航| 免费黄色日本网站| 成人短视频在线看| 国产男女激情视频| 中国黄色录像片| 一区二区三区入口| 日本一本中文字幕| 亚洲免费999| 国产av天堂无码一区二区三区| 无限资源日本好片| 极品粉嫩国产18尤物| 亚洲精品20p| 黄色免费福利视频| 国产精品亚洲天堂| 精品999在线| 日本免费不卡一区二区| 日本丰满大乳奶| 成人免费无码av| japanese在线播放| 日本美女视频一区| 成人在线免费播放视频| 高清欧美精品xxxxx| 中文字幕第50页| 国产美女18xxxx免费视频| 欧美v在线观看| 被灌满精子的波多野结衣| 亚洲第一精品区| 视频在线观看免费高清| 亚洲国产精品毛片av不卡在线| 久久天天东北熟女毛茸茸| 成人综合久久网| 搡女人真爽免费午夜网站| 国产精品网站免费| 欧美日韩激情四射| 色一情一乱一乱一区91| 国产九九九视频| 五月天婷婷在线观看视频| 在线观看国产中文字幕| 91淫黄看大片| 99视频在线免费| 天堂社区在线视频| 中文字幕在线观看第三页| 日韩中文字幕组| 欧美三级午夜理伦三级| 黄色片视频在线免费观看| 无码人妻丰满熟妇区96| 大肉大捧一进一出好爽视频| 精品久久一二三| 国产精品秘入口18禁麻豆免会员| 日韩日韩日韩日韩日韩| 男人添女荫道口图片| 男女猛烈激情xx00免费视频| heyzo亚洲| 哪个网站能看毛片| www日韩在线观看| 欧美一级裸体视频| 中文字幕线观看| 国产对白在线播放| 青青青在线观看视频| 男人插女人视频在线观看| 欧美变态另类刺激| 无码内射中文字幕岛国片| 久久国产精品国产精品| 夜夜爽久久精品91| www.xxx麻豆| 欧美性猛交久久久乱大交小说|