參數(shù)傳遞
java包括兩個數(shù)據(jù)類型
- 內(nèi)置數(shù)據(jù)類型
- 引用數(shù)據(jù)類型
一:搞清楚基本類型和引用類型的不同之處
int num = 10;
String str = "hello";
基本數(shù)據(jù)類型的變量num直接保存值,引用類型str保存的只是實際對象的地址。
二:搞清楚賦值運(yùn)算符(=)的作用
num = 20;
str = "java";
對于基本類型 num ,賦值運(yùn)算符會直接改變變量的值舱权,原來的值被覆蓋掉真朗。
對于引用類型 str咆课,賦值運(yùn)算符會改變引用中所保存的地址唤崭,原來的地址被覆蓋掉。但是原來的對象不會被改變(重要)舔亭。
三:調(diào)用方法時發(fā)生了什么些膨?參數(shù)傳遞基本上就是賦值操作。
作者:Intopass
鏈接:https://www.zhihu.com/question/31203609/answer/50992895
來源:知乎
著作權(quán)歸作者所有分歇。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)傀蓉,非商業(yè)轉(zhuǎn)載請注明出處欧漱。
第一個例子:基本類型
void foo(int value) {
value = 100;
}
foo(num); // num 沒有被改變
第二個例子:沒有提供改變自身方法的引用類型
void foo(String text) {
text = "windows";
}
foo(str); // str 也沒有被改變
第三個例子:提供了改變自身方法的引用類型
StringBuilder sb = new StringBuilder("iphone");
void foo(StringBuilder builder) {
builder.append("4");
}
foo(sb); // sb 被改變了职抡,變成了"iphone4"。
第四個例子:提供了改變自身方法的引用類型误甚,但是不使用缚甩,而是使用賦值運(yùn)算符。
StringBuilder sb = new StringBuilder("iphone");
void foo(StringBuilder builder) {
builder = new StringBuilder("ipad");
}
foo(sb); // sb 沒有被改變窑邦,還是 "iphone"擅威。