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

淺談Java當(dāng)作數(shù)組的幾個(gè)應(yīng)用場(chǎng)景

 更新時(shí)間:2022年11月08日 11:19:30   作者:念君思寧  
數(shù)組可以存放多個(gè)同一類型的數(shù)據(jù),可以存儲(chǔ)基本數(shù)據(jù)類型,引用數(shù)據(jù)類型(對(duì)象),下面這篇文章主要給大家介紹了關(guān)于Java當(dāng)作數(shù)組的幾個(gè)應(yīng)用場(chǎng)景,需要的朋友可以參考下

前言

對(duì)于數(shù)組,在C語(yǔ)言中就有過(guò)學(xué)習(xí),但是,并沒(méi)有怎么進(jìn)行總結(jié)過(guò),所以,筆者在Java中,對(duì)數(shù)組的幾個(gè)簡(jiǎn)單的應(yīng)用場(chǎng)景進(jìn)行總結(jié)一下:

1.保存數(shù)據(jù)

    public static void main(String[] args) {
            int[] array = {1, 2, 3};
            for(int i = 0; i < array.length; ++i){
                System.out.println(array[i] + " ");
            }
        }

代碼的運(yùn)行結(jié)果為:

2.. 參數(shù)傳基本數(shù)據(jù)類型

  public static void main(String[] args) {
        int num = 0;
        func(num);
        System.out.println("num = " + num);
    }
    public static void func(int x) {
        x = 10;
        System.out.println("x = " + x);
    }

代碼的運(yùn)行結(jié)果為:

發(fā)現(xiàn)在func方法中修改形參 x 的值, 不影響實(shí)參的 num 值.

3.. 參數(shù)傳數(shù)組類型(引用數(shù)據(jù)類型)

    public static void main(String[] args) {
        int[] arr = {1, 2, 3};
        func(arr);
        System.out.println("arr[0] = " + arr[0]);
    }
    public static void func(int[] a) {
        a[0] = 10;
        System.out.println("a[0] = " + a[0]);
    }

 代碼的運(yùn)行結(jié)果為:

 發(fā)現(xiàn)在func方法內(nèi)部修改數(shù)組的內(nèi)容, 方法外部的數(shù)組內(nèi)容也發(fā)生改變. 因?yàn)閿?shù)組是引用類型,按照引用類型來(lái)進(jìn)行傳遞,是可以修改其中存放的內(nèi)容的。

總結(jié): 所謂的 "引用" 本質(zhì)上只是存了一個(gè)地址. Java 將數(shù)組設(shè)定成引用類型, 這樣的話后續(xù)進(jìn)行數(shù)組參數(shù)傳參, 其實(shí) 只是將數(shù)組的地址傳入到函數(shù)形參中. 這樣可以避免對(duì)整個(gè)數(shù)組的拷貝(數(shù)組可能比較長(zhǎng), 那么拷貝開(kāi)銷就會(huì)很大).

4. 作為函數(shù)的返回值

比如:獲取斐波那契數(shù)列的前N項(xiàng)

public class Main {
    public static int[] fib(int n){
        if(n <= 0){
            return null;
        }
        int[] array = new int[n];
        array[0] = array[1] = 1;
        for(int i = 2; i < n; ++i){
            array[i] = array[i-1] + array[i-2];
        }
        return array;
    }
    public static void main(String[] args) {
        int[] array = fib(10);
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
        }
    }
}

代碼的運(yùn)行結(jié)果為:

 拓展講解:

1.作為函數(shù)的返回值部分:

    public static void func1(int[] array) {
        array=new int[]{15,16,17};
    }
    
    public static  void func2(int[] array) {
        array[0]=99;
    }
 
    public static void main(String[] args) {
        int[] array1={1,2,3,4};    
 
        func1(array1);            //打印結(jié)果: [1,2,3,4]   
       // func2(array1);           //打印結(jié)果: [99,2,3,4]
 
    }

在上述代碼中:對(duì)func1進(jìn)行分析:

 形參的改變,不會(huì)影響實(shí)參!!

在上述代碼中:func1僅僅是改變了形參的指向,并沒(méi)有影響的實(shí)參!

對(duì)func2進(jìn)行分析:

 在func2函數(shù)中,傳遞的是引用,我們可以通過(guò)引用來(lái)改變?cè)瓉?lái)的值??!

總結(jié)一下:

當(dāng)數(shù)組作為參數(shù)進(jìn)行傳遞的時(shí)候,其實(shí)還是按值傳遞的,此時(shí)的值是一個(gè)地址!!那么就會(huì)出現(xiàn)兩種情況:

情況1:形參修改指向,array=new int[10];  只會(huì)影響形參的指向!

比如:

  public static void func1(int[] array) {
        array=new int[]{15,16,17};
    }
   
 
    public static void main(String[] args) {
        int[] array1={1,2,3,4};    
 
        func1(array1);            //打印結(jié)果: [1,2,3,4]   
       
    }

情況2:形參修改指向?qū)ο蟮闹?/strong>: array[0]=99,此時(shí)才會(huì)影響到實(shí)參!

  public static  void func2(int[] array) {
        array[0]=99;
    }
 
    public static void main(String[] args) {
        int[] array1={1,2,3,4};
       
       // func2(array1);           //打印結(jié)果: [99,2,3,4]
 
    }

2.數(shù)組作為函數(shù)的返回值!

   public  static int[] func10() {
        int[] tmpArr={11,22,33};
        return tmpArr;
    }
    public static void main(String[] args) {
        int[] array=func10();
        System.out.println(Arrays.toString(array));  //[11,22,33]
    }

上述代碼的運(yùn)行結(jié)果為:

 畫(huà)圖分析為:

 解析:tmpArr 是在函數(shù)里面創(chuàng)建的局部變量!當(dāng)遇見(jiàn)return 的時(shí)候,這個(gè)方法就結(jié)束了,那么tmpArr 就會(huì)被回收掉了(銷毀),那么,就意味著,tmpArr把值傳遞給array后,就被回收了!!

3.方法內(nèi)部接收數(shù)組,并且返回?cái)?shù)組!

    public static int[] grow(int[] array) {
        for (int i = 0; i < array.length; i++) {
            array[i]=array[i]*2;
        }
        return array;
    }
 
    public static void main(String[] args) {
        int[] array={1,2,3,4,5,6,7,8};
 
        int[] ret=grow(array);
 
        System.out.println(Arrays.toString(array));  //[2, 4, 6, 8, 10, 12, 14, 16]
        System.out.println(Arrays.toString(ret));    //[2, 4, 6, 8, 10, 12, 14, 16]
    }

上述代碼的運(yùn)行結(jié)果為:

畫(huà)圖解析一下:

但是,另外一種寫(xiě)法: 我們需要簡(jiǎn)單思考一下喲??!

     public static int[] grow(int[] array) {
        int[] tmpArray =new int[array.length];//java支持這種數(shù)組的創(chuàng)建??!里面可以是變量!
        for (int i = 0; i < array.length; i++) {
            tmpArray[i]=array[i]*2;
        }
        return tmpArray;
    }
 
    public static void main(String[] args) {
        int[] array={1,2,3,4,5,6,7,8};
        int[] ret=grow(array);
        System.out.println(Arrays.toString(array));  //[1, 2, 3, 4, 5, 6, 7, 8]
        System.out.println(Arrays.toString(ret));    //[2, 4, 6, 8, 10, 12, 14, 16]
    }

代碼的運(yùn)行結(jié)果為:

畫(huà)圖解析為:

總結(jié)

到此這篇關(guān)于Java當(dāng)作數(shù)組的幾個(gè)應(yīng)用場(chǎng)景的文章就介紹到這了,更多相關(guān)Java數(shù)組應(yīng)用場(chǎng)景內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論