我说java中只有值传递你信么
?
????? 废话少说,看!
public class Test0 {public static void main(String [] args){String str = "前面";change(str);System.out.println(str);}public static void change(String s){s = "后面";}}????? 这个结果是什么呢?根据上面说的String是对象,那么应该是引用传递,所以结果是"后面"。对么?
????? 很显然,当执行change()前,str指向常量池中的"前面",当调用change()时,进行引用传递,所以s也指向"前面",但是在执行s="后面"以后,s就指向常量池中的"后面",这和str没有半毛钱关系,所以结果还是"前面"。
????? 关于String对象的创建内存分配在我前面分析String类的博客中已经介绍了。
?
????? 看完这些你蛋疼了木有,是不是云里雾里了?反正我刚看这些的时候我已经找不到东南西北了。
?
????? 上面说了是对象和数组就是引用传递了,那么我为什么说只有值传递呢?首先基本数据类型就不用说了,看看对象的传递,说到底还是内存地址的传递,地址本来就是个数字,也就是基本类型,所以说java中只有值传递。。嘿嘿,你信不信!