java 传入参数_Java 中方法参数的传递
java中方法參數(shù)傳遞看似有兩種,值傳遞和引用傳遞。而實(shí)際上都是值傳遞。
所謂值傳遞,傳遞的是變量的副本就是說(shuō),在將變量a作為參數(shù)傳進(jìn)方法中時(shí),方法中接收到的是a的副本,在方法中對(duì)參數(shù)的修改實(shí)際上修改的是a的副本,所以不會(huì)影響到a的值。
而引用傳遞,傳遞的是變量的內(nèi)存地址。在將變量a作為參數(shù)傳遞給方法時(shí),傳遞的是a的內(nèi)存地址,在方法中對(duì)參數(shù)的修改,實(shí)際上是修改的a本身。
因?yàn)閖ava的變量有兩類,一類是基本數(shù)據(jù)類型,一類是引用類型。所以就把基本數(shù)據(jù)類型作為參數(shù)進(jìn)行傳遞時(shí),當(dāng)做了“值傳遞“;把引用類型作為參數(shù)進(jìn)行傳遞時(shí),當(dāng)做了“引用傳遞“。 事實(shí)上無(wú)論是傳遞基本數(shù)據(jù)類型還是引用類型,java中都是按“值傳遞”進(jìn)行操作的。
在引用變量r作為 參數(shù)傳到方法中時(shí),傳遞的是r的副本。只不過(guò)r和r的副本都指向了同一個(gè)對(duì)象。
public class TestParamPassing {
public static void main(String[] args){
int b = 4;
testValueParam(b);
System.out.println("======== b : " + b);
List list = new ArrayList();
list.add("a");
list.add("b");
testReferenceParam(list);
System.out.println("======== list : " + list);
}
public static void testReferenceParam(List list){
list.add("c");
list = new ArrayList<>();
list.add("d");
System.out.println("-------- list : " + list);
}
public static void testValueParam(int a){
System.out.println("======== a: " + a);
a=3;
System.out.println("======== a after : " + a);
}
}
執(zhí)行結(jié)果為:
======== a: 4
======== a after : 3
======== b : 4
-------- list : [d]
======== list : [a, b, c]
在方法testValueParam(int a)中,因?yàn)槭恰爸祩鬟f”,所以傳到方法中的是原始值的副本,所以在方法中對(duì)a的修改,不會(huì)影響到原始值。
在方法testReferenceParam(List list)中,因?yàn)槭恰爸祩鬟f”,所以傳到方法中的是原始值的副本,所以兩者都指向了同一個(gè)對(duì)象,因此在方法中對(duì)對(duì)象的修改,會(huì)影響到原始值指向的對(duì)象。但是,當(dāng)在方法中,將副本指向了其他的對(duì)象,再對(duì)副本指向的對(duì)象進(jìn)行修改,就不會(huì)影響到原始值所指向的對(duì)象了。所以在傳遞引用變量時(shí),也是“值傳遞”。
總結(jié)
以上是生活随笔為你收集整理的java 传入参数_Java 中方法参数的传递的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java 参数传递_java中方法的参数
- 下一篇: java 停止一个线程_Java如何停止