3 回答
TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超8個(gè)贊
toUpperCase() 不會(huì)更改字符串。它返回一個(gè)新的大寫(xiě)字符串。
但據(jù)我了解,您想知道為什么對(duì)象值在方法中發(fā)生變化而不是預(yù)先數(shù)據(jù)類(lèi)型值?
盡管 Java 是嚴(yán)格按值傳遞的,但是傳遞基本類(lèi)型還是引用類(lèi)型的精確效果是不同的。
.
當(dāng)我們將基本類(lèi)型傳遞給方法時(shí),它是按值傳遞的。但是,當(dāng)我們將對(duì)象傳遞給方法時(shí),情況會(huì)發(fā)生巨大變化,因?yàn)閷?duì)象是通過(guò)有效的引用調(diào)用來(lái)傳遞的。Java 做了一件有趣的事情,它是按值傳遞和按引用傳遞之間的混合體。基本上,函數(shù)不能更改參數(shù),但函數(shù)可以通過(guò)調(diào)用其中的某些方法來(lái)要求參數(shù)更改自身。
在創(chuàng)建類(lèi)類(lèi)型的變量時(shí),我們僅創(chuàng)建對(duì)對(duì)象的引用。因此,當(dāng)我們將此引用傳遞給方法時(shí),接收它的參數(shù)將引用與參數(shù)引用的同一對(duì)象。
這實(shí)際上意味著對(duì)象的行為就像通過(guò)引用調(diào)用將它們傳遞給方法一樣。
對(duì)方法內(nèi)部對(duì)象的更改確實(shí)會(huì)反映在用作參數(shù)的對(duì)象中。
TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊
如果你像下面這樣做只會(huì)改變值。
public static void(String obj[]){
for(String s:obj) {
s=s.toUpperCase();
}
}
我認(rèn)為因此做出改變。
添加回答
舉報(bào)
