关于String对象问题,请教! 就是书上说对象的引用共享一个地址比如String s1 ="hello";String s2 =s1;现在s2,s1共享一个地址也就是说对s2的修改会影响s1但是事实不是这样.这是为什么?请教!谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 因为String s1 ="hello"; 字符串"hello"在常量池中s1,s2只是指向他的变量...当你修改s2时比如s2="asdasd"此时不过是在常量池中又产生了一个"asdasd"字符串常量..而s1仍然指向的是"hello".字符串情况比较特殊...你做试验用其它对象 String被设计成为了不可变(immutable)类,所有比较特殊,你如果要测试书上说的,建议用StringBuffer,如下:StringBuffer sb1 = new StringBuffer("hello");StringBuffer sb2 = sb1;sb1.append(" eric!"); System.out.println(sb1);System.out.println(sb2); String类型的变量均为常量,不能被修改。1楼正解。 当你s2修改的时候 s2已经指向另外一个对象了 而s1还是指向原来的"hello" 1.String s1 ="hello"; 在Stack空间里分配一个s1,如果data区内不存在"hello"字符串,则在data区创建"hello"字符串,并把s1指向data区内的"hello".2.String s2 =s1; 在Stack空间里分配一个s2,由于data区内存在"hello"字符串,所以就只需把s2指向data区内的"hello"即可.3.s1重新赋值: s1="baby"; 首先会在data区域内查找是否有"baby",如果data区内不存在"baby",则在data区创建"baby",并修改s1指向为data区内的"baby". 在重新赋值的过程中并没有修改s2,所以s2的值没有变化~ (1)String s1 ="hello"; 首先查找堆里有没有‘“hello”这个值,有的话就让s1指向它,没有的话就直接建立一个再让s1指向它。(2)String s2 =s1;再在栈里定义一个s2,让s2也指向"hello" ;现在s2,s1同指向一个"hello";(3)当修改s1或s2中的某一个时,比如:s1="world“,这时,s1就会指向"world”,而s2没变,还是指向"hello“ java 字符串为题 一个面试题 一个关于反射构造方法的问题 Hibernate 的外键问题,跪求各位大侠帮忙!!! Jdbc的问题 在JDialog中如何使用FileDialog实现模态文件打开对话框 关于抽象方法的. 高手请指教:客户端把定义好的一个Data类发送给服务器端,服务器端准备了一个一模一样的Data类接收,它却说找不到类 求就,郁闷,几天自己解决不了的菜鸟问题 最简单的问题! Java中如何创建二叉树 一个组件之间间距的问题。 java串口报错了,会看的高手门进来帮我看下啊~~~(急!!!!)
String s1 ="hello";
字符串"hello"在常量池中
s1,s2只是指向他的变量...当你修改s2时
比如
s2="asdasd"
此时不过是在常量池中又产生了一个"asdasd"字符串常量..而s1仍然指向的是"hello".字符串情况比较特殊...你做试验用其它对象
StringBuffer sb1 = new StringBuffer("hello");
StringBuffer sb2 = sb1;
sb1.append(" eric!");
System.out.println(sb1);
System.out.println(sb2);
1楼正解。
在Stack空间里分配一个s1,如果data区内不存在"hello"字符串,则在data区创建"hello"字符串,并把s1指向data区内的"hello".2.String s2 =s1;
在Stack空间里分配一个s2,由于data区内存在"hello"字符串,所以就只需把s2指向data区内的"hello"即可.3.s1重新赋值: s1="baby"; 首先会在data区域内查找是否有"baby",如果data区内不存在"baby",则在data区创建"baby",并修改s1指向为data区内的"baby". 在重新赋值的过程中并没有修改s2,所以s2的值没有变化~
首先查找堆里有没有‘“hello”这个值,有的话就让s1指向它,没有的话就直接建立一个再让s1指向它。
(2)String s2 =s1;
再在栈里定义一个s2,让s2也指向"hello" ;
现在s2,s1同指向一个"hello";
(3)当修改s1或s2中的某一个时,比如:s1="world“,
这时,s1就会指向"world”,而s2没变,还是指向"hello“