浅析java中的值传递与引用传递
public class Test { public static void main(String[] args) { String s = new String("aaa"); change(s); System.out.println(s); StringBuilder sb = new StringBuilder("111"); change(sb); System.out.println(sb); } static void change(String s){ s = new String("bbb"); } static void change(StringBuilder sb){ sb.append("333"); } }
打印结果:
aaa
111333
=========================================================================================
如上代码所示,
String s = new String("aaa");其实就是String s = "aaa";只不过java后台会自动帮我们封装;
而这里的change(s),此时就是值传递,值传递其实是传递的数据的拷贝(副本)并不会影响原来的值,在java中8个基本数据类型和String类型传递均为值传递。
==========================================================================================
下面谈谈引用传递
如上代码所示,
StringBuilder sb = new StringBuilder("111"); sb 指向 new StringBuilder("111")
change(sb)的时候是把sb的引用传递过去,所以当sb修改值的时候,原来的sb也跟着修改,因为他们指向的是同一块内存。
在java中,对象之间的传递大都是引用传递
===================================================================================
以上就是本人对java中的值传递和引用传递的粗略见解,欢迎各位大神指导批评。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。