读书人

Java中函数传值跟传引用

发布时间: 2012-11-21 08:23:25 作者: rapoo

Java中函数传值和传引用
在java中只有原始类型传送的是值,数组对象传送的都是引用。
值传到函数里面,无论发生什么变化都不会对函数外面的值产生任何影响。
引用(原始类型数组通引用)传进来以后,则情况会复杂些。
不可变类 和 可变类有区别。

String str = “string;StringBuffer sb=“stringbuffer”;function change(str, sb){str = new String("stringCC");sb.append("CC");}System.out.println(str);System.out.println(sb);

结果:
string
stringbufferCC

函数传入的都是值,只不过是两个对象的引用的值;
String 类 为不可变类,str = new String("stringCC"); 实例化了新的对象,因为传进来的只是值,所以函数外部的str 的引用指向的 内存块的内容并不会变化。
函数内部只是生成了新的内容为“stringCC”的内存块。
而sb在函数内部的变化,也只是那一块内存里面的内容发生了变化,所以外部还是可以看到这个变化。

读书人网 >编程

热点推荐