码迷,mamicode.com
首页 > 编程语言 > 详细

浅析java中的值传递与引用传递

时间:2015-05-05 10:14:04      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:

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中的值传递和引用传递的粗略见解,欢迎各位大神指导批评。

浅析java中的值传递与引用传递

标签:

原文地址:http://www.cnblogs.com/amazinglin/p/4478248.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!