欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java 中數(shù)組初始化實(shí)例詳解

 更新時(shí)間:2017年05月28日 09:09:10   作者:非水非云  
這篇文章主要介紹了 本文主要講數(shù)組的初始化方法、可變參數(shù)列表以及可變參數(shù)列表對(duì)函數(shù)重載的影響的相關(guān)資料,需要的朋友可以參考下

1.數(shù)組初始化

定義數(shù)組的方式:

  int[] arr1; 或  int arr1[];

數(shù)組初始化

  通過(guò)上邊的定義,我們只是得到了一個(gè)數(shù)組的引用。這時(shí)已經(jīng)為引用分配了存儲(chǔ)空間,但是還沒(méi)有給數(shù)組對(duì)象本身分配任何空間。想要給數(shù)組對(duì)象分配存儲(chǔ)空間,必須使用初始化表達(dá)式。

a.在數(shù)組創(chuàng)建的地方進(jìn)行初始化,如:

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

  這種方式等價(jià)于使用new來(lái)進(jìn)行存儲(chǔ)空間分配。

b.給數(shù)組的引用賦值,如:

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

  復(fù)制的只是一個(gè)引用。如下圖:

  所有的數(shù)組都有一個(gè)固定成員length,通過(guò)它可以知道數(shù)組元素的個(gè)數(shù)。

 c.當(dāng)不確定數(shù)組元素的個(gè)數(shù)時(shí)的數(shù)組創(chuàng)建

  當(dāng)數(shù)組元素個(gè)數(shù)不確定時(shí),我們可以直接使用new在數(shù)組里創(chuàng)建元素。注意new可以應(yīng)用于基本類(lèi)型的數(shù)組,但是不能應(yīng)用于單個(gè)的基本類(lèi)型。

d.在定義數(shù)組的同時(shí)也可以進(jìn)行初始化,當(dāng)創(chuàng)建一個(gè)非基本類(lèi)型的數(shù)組時(shí),實(shí)際上創(chuàng)建的是引用數(shù)組。

 可以用花括號(hào)列表的形式來(lái)初始化對(duì)象數(shù)組,有兩種形式:

 2.可變參數(shù)列表

下圖標(biāo)出了參數(shù)列表的使用方式、格式和對(duì)傳入?yún)?shù)的要求。

2.1 列表參數(shù)類(lèi)型可以不同的情況

可變參數(shù)類(lèi)型為Object,因?yàn)樗械念?lèi)都直接或間接的繼承自O(shè)bject類(lèi),可以向上轉(zhuǎn)型為Object,因此參數(shù)列表中的類(lèi)型可以不一致。

輸出如下圖:

2.2 列表參數(shù)類(lèi)型必須相同的情況

  當(dāng)然可變參數(shù)參數(shù)列表也可以作為函數(shù)的一個(gè)參數(shù)傳入,如下圖。這里的參數(shù)列表中的參數(shù)類(lèi)型為string,則所有的參數(shù)必須是string類(lèi)型,與上面的程序不同。

 2.3 可變參數(shù)列表中的參數(shù)可以是任何類(lèi)型,包括基本類(lèi)型

下面是可變參數(shù)列表為數(shù)組的例子:

從輸出結(jié)果的最后兩行可知,可變參數(shù)列表實(shí)際使用的是基本類(lèi)型,不依賴(lài)自動(dòng)包裝機(jī)制。

2.4 可變參數(shù)列表和自動(dòng)包裝機(jī)制

但是,我們要知道,可變參數(shù)列表和自動(dòng)包裝機(jī)制可以“共處”,如下圖:

2.5 可變參數(shù)列表與函數(shù)重載 

可變參數(shù)列表使重載過(guò)程變得復(fù)雜:

在上面的所有帶參數(shù)的函數(shù)調(diào)用,編譯器都會(huì)使用自動(dòng)包裝機(jī)制來(lái)匹配重載的方法,然后調(diào)用最匹配的方法。但是不使用使用參數(shù)來(lái)f()時(shí),編譯器會(huì)二義性錯(cuò)誤:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
  The method f(Character[]) is ambiguous for the type OverloadingVarargs

  at thingjinjava.OverloadingVarargs.main(OverloadingVarargs.java:25)

那么,如何解決這個(gè)問(wèn)題呢?

可以嘗試著在某個(gè)方法中增加一個(gè)非可變參數(shù)來(lái)解決該問(wèn)題。

可是,程序仍然無(wú)法通過(guò)編譯,還是報(bào)上面同樣的錯(cuò)誤。

但是,當(dāng)我們?cè)诮o這兩個(gè)函數(shù)都添加一個(gè)非可變參數(shù),問(wèn)題就可以解決了。

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • springboot 集成cas5.3 實(shí)現(xiàn)sso單點(diǎn)登錄詳細(xì)流程

    springboot 集成cas5.3 實(shí)現(xiàn)sso單點(diǎn)登錄詳細(xì)流程

    SSO的定義是在多個(gè)應(yīng)用系統(tǒng)中,用戶(hù)只需要登錄一次就可以訪問(wèn)所有相互信任的應(yīng)用系統(tǒng)。單點(diǎn)登錄是目前比較流行的企業(yè)業(yè)務(wù)整合的解決方案之一,本文給大家介紹springboot 集成cas5.3 實(shí)現(xiàn)sso單點(diǎn)登錄功能,感興趣的朋友一起看看吧
    2021-10-10
  • Eclipse中maven的配置詳解

    Eclipse中maven的配置詳解

    這篇文章主要介紹了Eclipse中maven的配置詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • 關(guān)于SpringCloud整合RabbitMQ的實(shí)例

    關(guān)于SpringCloud整合RabbitMQ的實(shí)例

    這篇文章主要介紹了關(guān)于SpringCloud整合RabbitMQ的實(shí)例,消息隊(duì)列是指利用高效可靠的消息傳遞機(jī)制進(jìn)行與平臺(tái)無(wú)關(guān)的數(shù)據(jù)交流,并基于數(shù)據(jù)通信來(lái)進(jìn)行分布式系統(tǒng)的集成,是在消息的傳輸過(guò)程中保存消息的容器,需要的朋友可以參考下
    2023-07-07
  • 解讀JSONArray刪除元素的兩種方式

    解讀JSONArray刪除元素的兩種方式

    這篇文章主要介紹了解讀JSONArray刪除元素的兩種方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • java中redis增刪查以及清理緩存的案例

    java中redis增刪查以及清理緩存的案例

    這篇文章主要介紹了java中redis增刪查以及清理緩存的案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • SSM 整合的配合文件(分享)

    SSM 整合的配合文件(分享)

    下面小編就為大家分享一篇SSM 整合的配合文件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • 一篇文章弄懂Mybatis中#和$的區(qū)別

    一篇文章弄懂Mybatis中#和$的區(qū)別

    mybatis為我們提供了兩種支持動(dòng)態(tài)sql的語(yǔ)法#{}以及${},兩者都是動(dòng)態(tài)的向sql語(yǔ)句中傳入需要的參數(shù),下面這篇文章主要給大家介紹了如何通過(guò)一篇文章弄懂Mybatis中#和$區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2021-12-12
  • Java之HashMap.values()方法的誤用解讀

    Java之HashMap.values()方法的誤用解讀

    這篇文章主要介紹了Java之HashMap.values()方法的誤用解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • MyBatis在mapper中傳遞參數(shù)的四種方式

    MyBatis在mapper中傳遞參數(shù)的四種方式

    MyBatis是一個(gè)持久層框架,它提供了一種將數(shù)據(jù)庫(kù)操作與Java對(duì)象之間的映射關(guān)系進(jìn)行配置的方式,在MyBatis中,Mapper是用于定義數(shù)據(jù)庫(kù)操作的接口,而參數(shù)傳遞則是通過(guò)Mapper接口的方法來(lái)實(shí)現(xiàn)的,本文給大家介紹了MyBatis在mapper中傳遞參數(shù)的四種方式,需要的朋友可以參考下
    2024-03-03
  • 解讀List?list=new?ArrayList()是怎么回事

    解讀List?list=new?ArrayList()是怎么回事

    這篇文章主要介紹了解讀List?list=new?ArrayList()是怎么回事,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06

最新評(píng)論