Java中参数的传递方式只有值传递,没有引用传递
?
stu1.setname("毛小杰");
?????? System.out.println(stu.name);
?????? System.out.println(stu1.name);
??? }
???
?
}
?
结果为:
毛杰
毛文杰
毛文杰
毛文杰
毛杰文
毛杰文
毛小杰
毛小杰
?
说明在赋值的过程中,自定义类型是引用传递的,用图中的示例来说,也就是说把A的值赋值给B等于让B指向A在堆中对应的C的内存空间,A和B的改变都会造成堆中C里面存储数据的改变。
?
那么基本类型又是什么情况呢?
?
package test;
?
publicclass test3 {
???
??? privatestaticinta=5;
??? privatestaticintb=10;
??? privatestatic String str="hello";
??? privatestatic String str1="hi";
???
??? publicstaticvoid main(String args[]){
?????? System.out.println("a:"+a);
?????? System.out.println("b:"+b);
??? ??? b=a;
?????? System.out.println("after b=a b:"+b);
?????? b=12;
?????? System.out.println("a:"+a);
?????? System.out.println("b:"+b);
??????
?????? System.out.println("str:"+str);
?????? System.out.println("str1:"+str1);
?????? str1=str;
?????? str1="你好";
?????? System.out.println("str:"+str);
?????? System.out.println("str1:"+str1);
??? }
}
?
结果是:
a:5
b:10
after b=a b:5
a:5
b:12
str:hello
str1:hi
str:hello
str1:你好?????????????
?
说明在赋值过程中基本类型是值传递,就是新开辟一个内存来复制赋值内容,改变传递后的变量对被赋值变量无影响。