亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java中main方法中聲明的變量

java中main方法中聲明的變量

狐的傳說 2021-10-06 09:43:40
這應該與范圍有關,但我仍然不明白變量發生了什么。為了練習,我在課堂上制作了三個方法,其中包含一個主要方法。在 main 方法中,我聲明了兩個用于試驗的變量:arr1 和 a。此外,我聲明了兩個變量來與原始變量(arr1 和 a)進行比較:sorted 和 b。然后,我嘗試使用我實現的 printq 方法打印數組,以查看前后之間的區別。    public static void main(String[] args) {    // TODO Auto-generated method stub    Main main = new Main();    int[] arr1 = new int[]{29, 64, 73, 34, 20};    int[] a = new int[]{2, 2, 2};    int[] sorted = main.insertionSort(arr1);    int[] b = main.changeValue(a);    main.printq(arr1);    main.printq(sorted);    main.printq(a);    main.printq(b);}^ 這是我嘗試的主要方法。    public int[] insertionSort(int[] arr) {    int min, temp;    for (int i = 0; i < arr.length - 1; i++) {        min = i;        for (int j = i + 1; j < arr.length; j++) {            if (arr[j] < arr[min]) {                min = j;            }        }        temp = arr[i];        arr[i] = arr[min];        arr[min] = temp;    }    return arr;}public void printq(int[] a) {    if (a == null) {        System.out.println("[]");    } else {        String temp = "[";        for (int i = 0; i < a.length - 1; i++) {            temp = temp + a[i] + ", ";        }        temp = temp + a[a.length - 1] + "]";        System.out.println(temp);    }}public int[] changeValue(int[] c) {    for (int i = 0; i < c.length; i++) {        c[i] = i + 1;    }    return c;}這是我嘗試過的方法。main.printq(arr1) prints [20, 29, 34, 64, 73]. (supposed to be [29, 64, 73, 34, 20]) main.printq(sorted) prints [20, 29, 34, 64, 73] as well. (as I expected) main.printq(a) prints [1, 2, 3]. (supposed to be [2, 2, 2])main.printq(b) prints [1, 2, 3]. (as I expected)即使在 main 方法中聲明的變量不是靜態變量,這個例子表明一個似乎受到另一個的影響。我試圖理解與訪問修飾符和范圍有關的這一點,但我最終發布了這個,因為我仍然不明白為什么 int 數組 arr1 和 sorted 最后具有相同的數組。有人可以解釋一下這段代碼是如何工作的嗎?
查看完整描述

1 回答

?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

為避免發送原始對象數據的引用,您可以發送其克?。◤椭疲ο髷祿囊?。


    public static void main(String[] args) {

// TODO Auto-generated method stub

Main main = new Main();

int[] arr1 = new int[]{29, 64, 73, 34, 20};

int[] a = new int[]{2, 2, 2};

//sorted and b would now point to the cloned data of arr1 and a respectively

int[] sorted = insertionSort(arr1.clone());

int[] b = changeValue(a.clone());

main.printq(arr1);

main.printq(sorted);

main.printq(a);

main.printq(b);

}


查看完整回答
反對 回復 2021-10-06
  • 1 回答
  • 0 關注
  • 256 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號