第四章:數(shù)組與方法——數(shù)組的傳遞與引用

本章目標(biāo)

  • 掌握數(shù)組的引用傳遞
  • 可以使用方法接收或返回一個(gè)數(shù)組
  • 了解Java對(duì)數(shù)組的操作支持

1、接收和返回?cái)?shù)組

一個(gè)方法可以接收一個(gè)數(shù)組,也可以返回一個(gè)數(shù)組,如果方法接收一個(gè)數(shù)組的話,則此方法對(duì)數(shù)組所做的方法將全部被保留下來(lái)。

public class ArrayRefDemo01{  
    public static void main(String args[]){
        int temp[] = {1,3,5} ;      // 利用靜態(tài)初始化方式定義數(shù)組
        fun(temp) ;                 // 傳遞數(shù)組
        for(int i=0;i<temp.length;i++){
            System.out.print(temp[i] + "、") ;
        }
    }
    public static void fun(int x[]){    // 接收整型數(shù)組的引用
        x[0] = 6 ;          // 修改第一個(gè)元素
    }
};
輸出結(jié)果:6、3、5

方法除了可以接收數(shù)組之外,也可以通過(guò)返回一個(gè)數(shù)組,只需要在返回值類型上,明確地聲明出返回的類型是數(shù)組即可。

public class ArrayRefDemo02{
    public static void main(String args[]){
        int temp[] = fun() ;        // 通過(guò)方法實(shí)例化數(shù)組
        print(temp) ;               // 打印數(shù)組內(nèi)容
    }
    public static void print(int x[]){
        for(int i=0;i<x.length;i++){
            System.out.print(x[i] + "、") ;
        }
    }
    public static int[] fun(){  // 返回一個(gè)數(shù)組
        int ss[] = {1,3,5,7,9} ;    // 定義一個(gè)數(shù)組
        return ss ;
    }
};
輸出結(jié)果:1、3、5、7、9

2、范例

2.1、定義排序方法

public class ArrayRefDemo03{
    public static void main(String args[]){
        int score[] = {67,89,87,69,90,100,75,90} ;  // 定義整型數(shù)組
        int age[] = {31,30,18,17,8,9,1,39} ;        // 定義整型數(shù)組
        sort(score) ;       // 數(shù)組排序
        print(score) ;      // 數(shù)組打印
        System.out.println("\n---------------------------") ;
        sort(age) ;         // 數(shù)組排序
        print(age) ;        // 數(shù)組打印
    }
    public static void sort(int temp[]){        // 執(zhí)行排序操作
        for(int i=1;i<temp.length;i++){
            for(int j=0;j<temp.length;j++){
                if(temp[i]<temp[j]){
                    int x = temp[i] ;
                    temp[i] = temp[j] ;
                    temp[j] = x ;
                }
            }
        }
    }
    public static void print(int temp[]){       // 輸出數(shù)組內(nèi)容
        for(int i=0;i<temp.length;i++){
            System.out.print(temp[i] + "\t") ;
        }
    }
};
輸出結(jié)果:
67  69  75  87  89  90  90  100
---------------------------
1  8  9  17  18  30  31  39

以上只是完成了整型數(shù)組的排序操作,如果一個(gè)操作中及要求可以排序整型也可以排序浮點(diǎn)型等各種數(shù)據(jù),如果分別實(shí)現(xiàn)則會(huì)比較麻煩,所以在Java中為了操作數(shù)組方便,提供了一個(gè)支持。

public class ArrayRefDemo04{
    public static void main(String args[]){
        int score[] = {67,89,87,69,90,100,75,90} ;  // 定義整型數(shù)組
        int age[] = {31,30,18,17,8,9,1,39} ;        // 定義整型數(shù)組
        java.util.Arrays.sort(score) ;      // 數(shù)組排序
        print(score) ;      // 數(shù)組打印
        System.out.println("\n---------------------------") ;
        java.util.Arrays.sort(age) ;            // 數(shù)組排序
        print(age) ;        // 數(shù)組打印
    }
    public static void print(int temp[]){       // 輸出數(shù)組內(nèi)容
        for(int i=0;i<temp.length;i++){
            System.out.print(temp[i] + "\t") ;
        }
    }
};
輸出結(jié)果:
67  69  75  87  89  90  90  100
---------------------------
1  8  9  17  18  30  31  39

2.2、定義排序方法

可以將一個(gè)數(shù)組中的指定位置的內(nèi)容拷貝給另外一個(gè)數(shù)組,如果,此時(shí)要設(shè)計(jì)方法的話,則此方法中要傳遞多少個(gè)參數(shù)呢?

  • 源數(shù)組
  • 源數(shù)組的開(kāi)始點(diǎn)
  • 目標(biāo)數(shù)組
  • 目標(biāo)數(shù)組的開(kāi)始點(diǎn)
  • 拷貝的長(zhǎng)度

那么,按照以上的思路,完成一個(gè)拷貝的操作

public class ArrayRefDemo05{
    public static void main(String args[]){
        int i1[] = {1,2,3,4,5,6,7,8,9} ;        // 源數(shù)組
        int i2[] = {11,22,33,44,55,66,77,88,99} ;// 目標(biāo)數(shù)組
        copy(i1,3,i2,1,3) ; // 調(diào)用拷貝方法
        print(i2) ;
    }
    // 源數(shù)組名稱,源數(shù)組開(kāi)始點(diǎn),目標(biāo)數(shù)組名稱,目標(biāo)數(shù)組開(kāi)始點(diǎn),拷貝長(zhǎng)度
    public static void copy(int s[],int s1,int o[],int s2,int len){
        for(int i=0;i<len;i++){
            o[s2+i] = s[s1+i] ; // 進(jìn)行拷貝操作
        }
    }
    public static void print(int temp[]){       // 輸出數(shù)組內(nèi)容
        for(int i=0;i<temp.length;i++){
            System.out.print(temp[i] + "\t") ;
        }
    }
};
輸出結(jié)果:
11  4  5  6  55  66  77  88  99

對(duì)于這樣的拷貝功能,在Java中也是有所支持的,直接使用Java提供的一個(gè)操作語(yǔ)句即可。

public class ArrayRefDemo06{
    public static void main(String args[]){
        int i1[] = {1,2,3,4,5,6,7,8,9} ;        // 源數(shù)組
        int i2[] = {11,22,33,44,55,66,77,88,99} ;// 目標(biāo)數(shù)組
        System.arraycopy(i1,3,i2,1,3) ; // 調(diào)用Java中對(duì)數(shù)組支持的拷貝方法
        print(i2) ;
    }
    public static void print(int temp[]){       // 輸出數(shù)組內(nèi)容
        for(int i=0;i<temp.length;i++){
            System.out.print(temp[i] + "\t") ;
        }
    }
};
輸出結(jié)果:
11  4  5  6  55  66  77  88  99

3、總結(jié)

  • 數(shù)組的引用傳遞傳遞的就是堆內(nèi)存的使用權(quán),可以將一個(gè)數(shù)組傳遞到方法之中,傳遞的時(shí)候不需要寫上“[ ]”,直接寫名字即可。
  • 方法中對(duì)數(shù)組所做的修改都會(huì)被保留下來(lái)。
  • 在Java中提供了一些對(duì)數(shù)組操作支持的方法,后續(xù)會(huì)進(jìn)行介紹。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • *面試心聲:其實(shí)這些題本人都沒(méi)怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來(lái)就是把...
    Dove_iOS閱讀 27,626評(píng)論 30 472
  • 第5章 引用類型(返回首頁(yè)) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,682評(píng)論 0 4
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 34,734評(píng)論 18 399
  • 究竟是什么動(dòng)作在酒后做起來(lái)這么危險(xiǎn)呢?咱們先來(lái)看個(gè)栗子: 老王一直被朋友同事奉為酒場(chǎng)高手,這么多年來(lái),有酒必喝,逢...
    朵小陽(yáng)閱讀 366評(píng)論 0 0
  • D1(7月9日,星期六) 脫離了大城市的滾滾紅塵,亢奮地奔向遠(yuǎn)方……其實(shí)前一天從單位下班,心情已經(jīng)大好,靈魂重新附...
    lm025x6kg70閱讀 906評(píng)論 1 3

友情鏈接更多精彩內(nèi)容