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

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

ArrayList.get 如何返回它的對象?

ArrayList.get 如何返回它的對象?

瀟瀟雨雨 2021-09-15 14:19:32
上下文:我正在制作一個小型解釋器式計算器。我認為保存符號表的最佳方法是創建一個我定義的對象的 ArrayList(對象的名稱是 WiP)。設置 ArrayList 看起來像。ArrayList<miniVariable> vList = new ArrayList<miniVariable>();足夠簡單,miniVariable對象包含以下變量    public String name;    public double value;     public boolean initialized;它們是公開的,因為我已經使用 ArrayList 在類中創建了 setter/getter,當時我沒有意識到你可以創建一個對象,而且我不想把所有東西都移過去。我大概應該。問題:如果我調用vList.get(index) .value = 5;它實際上會改變存儲在vList(index)'svalue變量中的值嗎?或者.get(index)只是返回數據的副本,因此更改此副本實際上并沒有做任何事情?
查看完整描述

3 回答

?
慕碼人2483693

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

所有集合對象都存儲對對象的引用,如果您直接(通過集合訪問)或間接(已經擁有它的引用)更改對象上的任何內容,它將更改存儲在集合中的對象的狀態


查看完整回答
反對 回復 2021-09-15
?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

您存儲在 中的ArrayList不是對象本身,而是對對象的引用。

因此,當您這樣做時,vList.get(i)它會返回您之前放入的引用。這意味著您將訪問之前放入列表中的同一個對象,而不是它的副本。

讓自己熟悉 Java 的基本概念之一,即引用和原始類型。

一些題外話的建議:

  • 確保您了解 Java 的命名約定。例如,對于類名,它應該是MiniVariable而不是miniVariable。

  • 更準確地說:“并且 miniVariable 對象包含以下變量”,MiniVariable是一個類,而不是一個對象。您可能會說“并且一個 MiniVariable 對象(實例)包含這些成員字段”,或者“在 MiniVariable 類中定義了以下成員字段”


查看完整回答
反對 回復 2021-09-15
?
12345678_0001

TA貢獻1802條經驗 獲得超5個贊

正如人們所期望的那樣,它會更改原始實例上的值。

在 Java 中創建對象的副本只會顯式地發生(并且通常會遇到一些困難)。

其他一些注意事項:

  • 中的類名應該是CapitalCase.

  • 在持有對象列表的對象上實現 getter 和 setter 是不好的做法,因為它違反了封裝。如果您正在實現 getter 和 setter,最好將它們放在它們適用的類中。


查看完整回答
反對 回復 2021-09-15
  • 3 回答
  • 0 關注
  • 356 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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