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

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

關于數組賦值問題,為什么數組A賦值給數組B后,數組B改變,A也跟著改變

關于數組賦值問題,為什么數組A賦值給數組B后,數組B改變,A也跟著改變

t峰01 2016-03-03 15:22:46
如題,代碼如下:package hello;public class haha{?public static void main(String args[]){ int[] a1 = { 1, 2, 3, 4, 5 }; ? int[] a2; ? ? ? ? a2 = a1; ? ? ?? for(int i = 0; i < a2.length; i++) ? a2[i]++; for(int i = 0; i < a1.length; i++) ? ? ? ?? System.out.println( "a1[" + i + "] = " + a1[i]);? ? ? }}輸出a1[0] = 2a1[1] = 3a1[2] = 4a1[3] = 5a1[4] = 6
查看完整描述

4 回答

已采納
?
計量趙子龍

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

a2 = a1;該語句實則是把a1的地址給了a2,所以給a2賦值相當于對a1也操作了;java中取消了指針的概念,但是在內存中歸根結底,兩個數組的地址相同了。如果你想賦值單數還不改變量的話,可以創建一個臨時數組。如有疑問可追問,如滿意望采納,謝謝。

查看完整回答
2 反對 回復 2016-03-03
  • t峰01
    t峰01
    你好,我想把a1數組的元素搬到 a2中去,但是又不會影響到a1(無論a2如何改變) a1賦值給 臨時數組 再賦值給a2?這樣行不通啊,具體如何操作啊 謝謝
  • skyward
    skyward
    重新new一片內存空間,比如int[] a = new int[5]; 然后用一個for循環將要復制的數組中每個元素值賦值給新建的數組,也可以調用Arrays.copyOf方法復制
  • 計量趙子龍
    計量趙子龍
    java中定義數組的標準格式是 數據類型[] 數組名 = new 數據類型[數組大小];例如: int[] a = new int[5]; 使用這種方法可以避免好多問題,不足之處就是需要逐個初始化
?
相忘于江湖494

TA貢獻19條經驗 獲得超10個贊

打個比方數值就是蘋果,你只是把蘋果地址給了B,而不是給B有創造了蘋果,所以只要蘋果動了,所以A和B都會改變

查看完整回答
2 反對 回復 2016-03-03
?
一條小咸魚

TA貢獻457條經驗 獲得超255個贊

import?java.util.Arrays;

public?class?HelloWorld?{
????public?static?void?main(String[]?args)?{

????????int[]?arry1?=?{?1,?2,?3?};
????????int[]?arry2?=?arry1.clone();
????????arry2[2]?=?1;
????????System.out.println(Arrays.toString(arry1));
????????System.out.println(Arrays.toString(arry2));
????}
}


查看完整回答
反對 回復 2016-03-03
?
趙志廣

TA貢獻53條經驗 獲得超17個贊

只是把引用給了B,他們對應的還是一個數組

查看完整回答
反對 回復 2016-03-03
  • 4 回答
  • 0 關注
  • 3096 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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