该篇文章根据知乎用户[Intopass]回答内容修改而来。
https://www.zhihu.com/question/31203609
首先结论是
八大基本数据类型按值传递。
其他对象按引用传递。
方法的传递其实就是一个变量赋值给另一个变量的过程。基本数据类型赋值传递的是值本身,其他对象赋值传递的是引用。
结果验证
首先看第一个程序(按值传递):
int num = 100;
public void method(int i){
i = 0;
}
method(num);
System.out.println(num);
在这里num的值没有被改变。还是原来的值。
第二个程序(按引用传递,不改变自身):
String str = "hello";
public void mathod(String s){
s = "world";
}
method(str);
System.out.println(str);
输出结果还是hello。
第三个程序(按引用传递,改变自身):
StringBuffer buffer= new StringBuffer("Hello");
public void method(StringBuffer sb){
sb.apend("World");
}
method(buffer);
System.out.println(buffer);
输出HelloWorld。
2016年4月17日18:58:54
周日
写于宿舍