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

為了賬號安全,請及時綁定郵箱和手機立即綁定

基礎類型是值傳遞,變量data為什么值被改變了?

  1. byte[] data = new byte[1024];//創建字節數組,指定接受的數據包的大小

  2. System.out.println(data);

  3. DatagramPacket datagramPacket = new DatagramPacket(data, data.length);

  4. //3.接受客戶端發送的數據

  5. System.out.println("服務器機即將啟動,等待客戶端的連接");

  6. datagramSocket.receive(datagramPacket);//此方法在接受到數據包之前會一直阻塞

  7. System.out.println(data);// ??? data值改變

  8. System.out.println(datagramPacket.getData());

  9. //4.讀取數據

  10. String info = new String(data, 0, datagramPacket.getLength());

  11. System.out.println("我是服務端,客戶端說:" + info);

第7行data值發生了改變???


正在回答

3 回答

我覺得真正對data數組動手腳的應該是receive方法 會不會是返回一個data數組覆蓋了前面定義的數組呢?

0 回復 有任何疑惑可以回復我~

datagramSocket.receive(datagramPacket);這里獲取到了數據包,data值當然會變啊。詳細代碼說明:https://blog.csdn.net/ljcgit/article/details/81450491

0 回復 有任何疑惑可以回復我~

首先第一點:在java里,只有值傳遞。

你可能是剛學完c語言吧。你的面向對象思想還需要加強。

data指向的是一個一個字節數組,如果在data數組作為參數的方法里,改變data數組的指向(也就是指向另一片內存),自然不會改變data數組的值(不會改變原來內存的值)。但是,改變的是data數組里的元素,這就是直接修改data數組指向的內存的值了。

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

基礎類型是值傳遞,變量data為什么值被改變了?

我要回答 關注問題
微信客服

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

幫助反饋 APP下載

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

公眾號

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