真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Java數(shù)組的基本操作有哪些

這篇“Java數(shù)組的基本操作有哪些”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來(lái)看看這篇“Java數(shù)組的基本操作有哪些”文章吧。

目前創(chuàng)新互聯(lián)公司已為上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、天祝藏族自治網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

Java數(shù)組的基本操作有哪些

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

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

問(wèn)題1:

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

int age = 17;//表示一個(gè)年齡

問(wèn)題2:

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

大師的建議:定義方法的形參時(shí),最好不好超過(guò)5個(gè)。

1.2 什么是數(shù)組

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

Java數(shù)組的基本操作有哪些

1.3 數(shù)組的定義

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

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

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

注意:數(shù)組必須先初始化才能使用。因?yàn)槌跏蓟硎驹趦?nèi)存中分配空間

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

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

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

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

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

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

語(yǔ)法:

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

舉例:

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

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

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

Java數(shù)組的基本操作有哪些

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

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

語(yǔ)法:

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

舉例:

    int[] ages = new  int[
100
];

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

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

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

當(dāng)我們事先不知道,需要存儲(chǔ)哪些數(shù)據(jù)的時(shí)候,只能使用動(dòng)態(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),因?yàn)閒or循環(huán)事先知道循環(huán)的次數(shù)。

  • 數(shù)組長(zhǎng)度:  int len = 數(shù)組名.length;  length是屬性,不是方法.

  • 索引范圍:  從0開(kāi)始,逐一遞增。 [0,數(shù)組名.length-1]

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

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

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

如以下代碼:

String[] bs = null;

System.out.println(bs.length)

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

出現(xiàn)該異常的原因:根據(jù)索引取出數(shù)據(jù)元素時(shí),輸入了超出數(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ù)組的時(shí)候,打印出來(lái)是hashCode值,如

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

System.out.println(nums);

Java數(shù)組的基本操作有哪些

我們不喜歡,我們想打印數(shù)組的時(shí)候,把該數(shù)組的元素打印出來(lái),這時(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)遍歷一遍,好麻煩啊! 有沒(méi)有更好的方式呢?其實(shí)不用著急,Java前輩們已經(jīng)幫我們想到了這一點(diǎn)了,我們只需要調(diào)用Arrays.toString()方法就能夠?qū)?shù)組進(jìn)行打印。

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

例子:原數(shù)組[A, B, C, D, E],要求對(duì)該數(shù)組進(jìn)行逆序操作得到新數(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ù)組的線性搜索指得就是挨個(gè)遍歷,查找數(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í)就是是多個(gè)數(shù)據(jù)的集合。如果現(xiàn)在有多個(gè)數(shù)組,我想把多個(gè)數(shù)組保存在一個(gè)集合中,此時(shí)我又應(yīng)該如何完成呢?此時(shí)就需要引入多維數(shù)組的概念。多維數(shù)組其實(shí)就是把整個(gè)數(shù)組看成一個(gè)元素,存放到另一個(gè)數(shù)組當(dāng)中去。

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

數(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ù)組中的每一個(gè)元素都是一個(gè)值(基本類型和引用類型的值);

  • 二維數(shù)組:數(shù)組中的每一個(gè)元素又是一個(gè)一位數(shù)組;

  • 三維數(shù)組:數(shù)組中的每一個(gè)元素又是一個(gè)二維數(shù)組;

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

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

靜態(tài)初始化

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

{1,2,3} ,

{4,5},

{6}

};

動(dòng)態(tài)初始化

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

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

Java數(shù)組的基本操作有哪些

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

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

5.1 增強(qiáng)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]);
}

其實(shí)我們?cè)谑褂醚h(huán)迭代數(shù)組的時(shí)候,往往是不關(guān)心迭代變量(數(shù)組的索引)。那在Java中有沒(méi)有更好的方式,在迭代數(shù)組元素的時(shí)候就只操作數(shù)組元素,不去操作數(shù)組的索引呢?其實(shí)是有的。

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

語(yǔ)法:

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

{

      循環(huán)體

}

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

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

Java數(shù)組的基本操作有哪些

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

Java5的時(shí)候?yàn)槭裁匆黾涌勺儏?shù)呢?我們來(lái)看一下以下的需求

需求:編寫(xiě)一個(gè)方法,統(tǒng)計(jì)使用數(shù)組傳遞過(guò)來(lái)的總和。

Java數(shù)組的基本操作有哪些

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

  • 為了求多個(gè)數(shù)之和,我們還得先創(chuàng)建一個(gè)數(shù)組來(lái)存儲(chǔ)數(shù)據(jù)。

  • 如果多個(gè)數(shù)是變化的,比如求3個(gè)數(shù)之和變成求5個(gè)數(shù)之和.......,還得去修改定義數(shù)組,但是數(shù)組是定長(zhǎng)的。

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

注意:

  • 方法的可變參數(shù)其實(shí)也是一個(gè)語(yǔ)法糖,是編譯器級(jí)別的新特性。主要是為了讓開(kāi)發(fā)者寫(xiě)代碼更簡(jiǎn)單。

  • 方法的可變參數(shù)其底層是就是一個(gè)數(shù)組類型。

  • 可變參數(shù)必須作為方法的最后一個(gè)參數(shù),避免參數(shù)的歧義性。

  • 一個(gè)方法最多只有一個(gè)可變參數(shù)

Java數(shù)組的基本操作有哪些

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

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

  • 從 src 引用的源數(shù)組到 dest 引用的目標(biāo)數(shù)組,數(shù)組組件的一個(gè)子序列被復(fù)制下來(lái)。

  • 被復(fù)制的組件的編號(hào)等于 length 參數(shù)。

  • 源數(shù)組中位置在 srcPos 到 srcPos+length-1 之間的組件被分別復(fù)制到目標(biāo)數(shù)組中的 destPos 到 destPos+length-1 位置。

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

Java數(shù)組的基本操作有哪些

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

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

arraycopy 方法使用方式

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

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

Java數(shù)組的基本操作有哪些

以上就是關(guān)于“Java數(shù)組的基本操作有哪些”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)站題目:Java數(shù)組的基本操作有哪些
分享鏈接:http://weahome.cn/article/gepooe.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部