String s = "Hello";s = s + " world!";这两行代码执行后,结果是不变的。到底其中是怎么一回事,书上说是生成了新的字符串,那原来的呢?不懂,大虾们指教下,深入分析下。
解决方案 »
- 怎么java编程实现网络邻居的功能
- 怎样实现删除多层子目录?
- JAVA与C++通讯问题
- 请高手指点一下,表模型上加了渲染器,列成为JButton后,如何删行
- 我已经熟练掌握了C语言的基本知识,然后看什么书啊?
- 再求关于文件的操作 在查询里没有看到合适的答案(两个帖子200分赠送)
- Jtable更新问题.高手请进
- Resultset.getString("COLUMN_NAME")的COLUMN_NAME是怎么来的,书上这么写,我不明白作者是怎么知道用它的?
- 生产者消费者问题
- 四个小角,呵呵,庆祝csdn的的j2ee版块,请斑竹不要删呀!
- 请教一个简单的问题:“焦点”是什么意思?
- 内部类与访问权限的问题
public static void main(String[] args){
StingBuffer a=new StringBuffer("A");
StringBuffer b=new StringBuffer("B");
operate(a,b);
System.out.println(a+","+b);
}
static void operate(StringBuffer x,StringBuffer y){
y.append(x);
y=x;
}
}
能详细解释下这段代码吗?
String s = "Helld";
String t;
t = s.replace('d','o');
那么这时候s还是原来的s,t是HelloStringBuffer st = new StringBuffer("Helld");
st.replace('d','e');
则st就是Hello;
public static void main(String[] args){
StringBuffer a=new StringBuffer("A");
StringBuffer b=new StringBuffer("B");
operate(a,b);System.out.println(b);
}
static void operate(StringBuffer x,StringBuffer y){
y.append(x);
System.out.println(y);
y = x ;
System.out.println(y);}
}这样看结果。
y.append(x)是字符串缓冲的方法,相当于是一种引用型,改变了地址
y = 只是值的交换,并没有改变其地址
public class Foo{
public static void main(String[] args){
StringBuffer a=new StringBuffer("A");
StringBuffer b=new StringBuffer("B");
StringBuffer c;
c = operate(a,b);System.out.println(c);
}
static StringBuffer operate(StringBuffer x,StringBuffer y){
y.append(x);y = x ;
return y;}
}加入返回值后结果是A,也就是说y=x生效了,但为何
static void operate(StringBuffer x,StringBuffer y){
y.append(x);
y=x;
}y=x 没有作用?这就是我刚才说a,b是String Buffer的引用对象,y.append这方法是修改地址的。而
static void operate这是个无返回值,也就是说y = x并没有修改y的地址