String a="hello,";
String b=a;
b="java.";
System.out.println(a);
System.out.println(b);
如上的代码,按照某些书上的解释,是一个引用,按理说a也应该=java才是,可是我的输出结果是hello,并没有改变。是我理解错了,还是其它原因?
解决方案 »
- webservice返回html怎么处理?
- 一个代码调试的问题,麻烦帮我看看
- struts2中的转换器问题!!!!!
- struts2 又jsp向action传值问题.
- struts2 将页面中的List传回Action
- 关于ibatis的配置文件sqlMapConfig.xml中的Pool.ValidationQuery引发的错误
- 谁知道在那可以下载到cvsnt啊!!
- 急需Hibernate Synchronizer 插件
- 这句话是什么意思"You must have javascript and cookies turned on to access these downloads."
- 十天学会写EJB,可行性为:......????请各位发表意见?
- struts判断2个数的大小(简单问题)
- 有个问题想不通,遇到过的朋友,请帮忙解决一下
b为java。
按照某些书上的解释,是一个引用,按理说a也应该=java才是,在这里错了
a是个引用,指向hello
b指向a
b再指向“java"
a始终还是hello嘛
String a="hello,";
String b=a; //将b指向了a所指向内存
b="java."; //将b指向了"java"所在内存
System.out.println(a);
System.out.println(b);
从上面可以看出, 两次赋值都是改变了b的引用, 因此, a和b不是同一个东西.
我晕了。。
楼主错误理解了这步
String b=a;
我换一下代码,是不是可以这样解释:String a="hello,";
String b=a;//b指向hello的内存
a="java.";//(这里的代码做了修改)a不再指向hello的内存,而指向了java的内存
System.out.println(a);
System.out.println(b);//所以输出时b还是指向原来的内存hello,而不是java...如此解释倒是理解了,可是所谓的引用:指向同一个对象,对任何一个变量的修改都会影响另一个变量的值。似乎就没有体现了,这样跟int型的赋值没啥区别嘛
可惜你没有修改那个变量, 而是把它指向其他地方了, 真正的修改是修改它的内部, 假设String提供一个方法setValue(), 这个方法真正修改了内部的值, 那么你调用它才是修改值.
实际上“hello”这个字符串是个独立的东东,a和b都是指向这个对象的这样理解就正解了吧
know了,know了,非常感谢~~~~