3 回答

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超8個贊
toUpperCase() 不會更改字符串。它返回一個新的大寫字符串。
但據(jù)我了解,您想知道為什么對象值在方法中發(fā)生變化而不是預(yù)先數(shù)據(jù)類型值?
盡管 Java 是嚴(yán)格按值傳遞的,但是傳遞基本類型還是引用類型的精確效果是不同的。
.
當(dāng)我們將基本類型傳遞給方法時,它是按值傳遞的。但是,當(dāng)我們將對象傳遞給方法時,情況會發(fā)生巨大變化,因?yàn)閷ο笫峭ㄟ^有效的引用調(diào)用來傳遞的。Java 做了一件有趣的事情,它是按值傳遞和按引用傳遞之間的混合體?;旧希瘮?shù)不能更改參數(shù),但函數(shù)可以通過調(diào)用其中的某些方法來要求參數(shù)更改自身。
在創(chuàng)建類類型的變量時,我們僅創(chuàng)建對對象的引用。因此,當(dāng)我們將此引用傳遞給方法時,接收它的參數(shù)將引用與參數(shù)引用的同一對象。
這實(shí)際上意味著對象的行為就像通過引用調(diào)用將它們傳遞給方法一樣。
對方法內(nèi)部對象的更改確實(shí)會反映在用作參數(shù)的對象中。

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個贊
如果你像下面這樣做只會改變值。
public static void(String obj[]){
for(String s:obj) {
s=s.toUpperCase();
}
}
我認(rèn)為因此做出改變。
添加回答
舉報