读书人

小弟我说java中只有值传递你信么

发布时间: 2012-12-23 11:28:15 作者: rapoo

我说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中只有值传递。。嘿嘿,你信不信!

读书人网 >编程

热点推荐