⑴ 在java中String的傳參
這個是儲存結構的問題
1,str1是個地址值,傳給str的也是這個地址值,此時,str=str1=地址值,都指向常量池中的「good」
2,當執行 str="test ok"後,常量池中出現「test ok」,str改變且指向常量池中的「test ok」,此時str1仍指向常量池中的「good」,str地址值不等於str1地址值
3,你的程序並不能說明你的問題,輸出結果應該是 test ok and gbc
4,簡單來記:基本數據類型和String str在傳參方法中改變是無效的,但String[] str、char[] ch之類是有效的
⑵ Java中String類型傳參和char數組類型傳參的區別
1. 類型不同,char是字元類型, String是字元串類型
2、String字元串是用""來包含串的, char是用''來包含單字元的
char a='1';//定義一個字元String b="dadsa";//定義一個字元串
3、String內部用來存儲的結果是一個char字元數組。
private final char value[];//這是string中用來存儲值的結構。
⑶ java string 類型 作為參數是什麼傳遞
如果你認為arrayPassTest 函數中,s是作為值傳遞,而ss是作為引用傳遞,所以有這樣的輸出結果,也不算錯誤,但是決對沒有真正理解裡面的原因。在這里,String 類型的傳遞是引用傳遞,也即是地址傳遞。這個是毋庸置疑的。因為在java里,String是對象類型,作為參數肯定是引用傳遞。之所以有值傳遞的效果,是因為Stirng內部實現時,是用char[] 來存儲字元串的,所以String相當於char[]的包裝類,那java中,包裝類的一個特質就是值操作時體現對應的基本類型的特質。
⑷ Java中如何傳值
可以通過參考傳值,如下:
publicclassTest{
publicvoidfunction(inta){}
publicstaticvoidmain(String[]args){
Testtest=newTest();
inta=1;
test.function(a);
}
}
⑸ 關於java裡面的string傳值問題
「hello」 這個字元串存在一個地方, main 里的 str 存了一個指向「hello」 的地址。
在調用 test(str); 時,把 str 的一個副本傳遞了出去,str 現在仍然存儲的是一個指向「hello」 的地址,這一點沒有變。
在test(String str) 里, 這個 test 里的 str 得到了指向「hello」 的地址,此時它也是指向「hello」的,就是說,在 test 方法里,你如果列印 str,這時候列印出來的是 「hello」。
後面test方法里執行了str = "world";, 所以 test 方法里的 str 改變了,指向了存儲「world」字元串的地址。
然後程序返回 main 執行,這時 test 方法里的 str 的生命周期已經結束,因為它的作用域只在 test 方法中。
返回到 main 以後,你列印出來的是 main 里的 str ,它沒有被改變過,它仍然指向「hello」 的地址。
不知是否說清楚了??
⑹ java string 類型 作為參數是什麼傳遞
如果你認為arrayPassTest
函數中,s是作為值傳遞,而ss是作為引用傳遞,所以有這樣的輸出結果,也不算錯誤,但是決對沒有真正理解裡面的原因。在這里,String
類型的傳遞是引用傳遞,也即是地址傳遞。這個是毋庸置疑的。因為在java里,String是對象類型,作為參數肯定是引用傳遞。之所以有值傳遞的效果,是因為Stirng內部實現時,是用char[]
來存儲字元串的,所以String相當於char[]的包裝類,那java中,包裝類的一個特質就是值操作時體現對應的基本類型的特質。
⑺ java傳值問題,String類型的會被轉化為數字類型的,求解決方法
alert(<%=empNO.toString()%>);alert(<%=a%>);
你這么寫,不加引號,如果你的empNO或者a是字元串類型的數值的話,JS會當成數字來對待。
當然,如果你寫成非數字,會報錯。
⑻ java中string傳值是按值傳遞還是地址傳遞
不要去嘗試拿c c++的思維考慮java,不用去考慮String傳遞的是值還是地址,我是這么理解的,只要知道String的底層是由被final修飾的char數組組成,那麼String類型的數值永遠不會在原值上被改變,所有方法比如replace等 都是創建一個新的對象,記住永不可改變就好了。