当前位置: 技术问答>java相关
String 问题,请大家一起讨论,在线等待
来源: 互联网 发布时间:2015-10-12
本文导语: public class Test{ public static void stringReplace(String text){ text=text.replace('j','l'); } public static void bufferReplace(StringBuffer text){ text=text.append("c"); } public static void main(String args[]){ String textString=new String("java"); ...
public class Test{
public static void stringReplace(String text){
text=text.replace('j','l');
}
public static void bufferReplace(StringBuffer text){
text=text.append("c");
}
public static void main(String args[]){
String textString=new String("java");
StringBuffer textBuffer=new StringBuffer("java");
stringReplace(textString);
bufferReplace(textBuffer);
System.out.println(textString+textBuffer);
}
}
给出答案和原因
public static void stringReplace(String text){
text=text.replace('j','l');
}
public static void bufferReplace(StringBuffer text){
text=text.append("c");
}
public static void main(String args[]){
String textString=new String("java");
StringBuffer textBuffer=new StringBuffer("java");
stringReplace(textString);
bufferReplace(textBuffer);
System.out.println(textString+textBuffer);
}
}
给出答案和原因
|
javajavac
String类型的值是不能改变的,当你给它赋新值的时候,实际上是产生了一个新的String对象,用原来的String句柄来引用。虽然对于对象来说,函数的参数传递的是句柄,但句柄本身是按值来传递的,所以当从函数返回时,作为参数的String句柄又指向了原来的String对象,值不变。
String类型的值是不能改变的,当你给它赋新值的时候,实际上是产生了一个新的String对象,用原来的String句柄来引用。虽然对于对象来说,函数的参数传递的是句柄,但句柄本身是按值来传递的,所以当从函数返回时,作为参数的String句柄又指向了原来的String对象,值不变。
|
当然是:javajavac
因为String对象是不能改变的
而StringBuffer对象则可以被改变
因为String对象是不能改变的
而StringBuffer对象则可以被改变
|
javajavac
原因楼上
原因楼上
|
public static void bufferReplace(StringBuffer text){
text=text.append("c");
}
----------
其实不要text=结果依然是javajavac,关键在于后面的text.append("c"),因为append直接修改了参数text(一个句柄)指向的对象
text=text.append("c");
}
----------
其实不要text=结果依然是javajavac,关键在于后面的text.append("c"),因为append直接修改了参数text(一个句柄)指向的对象
|
你要干嘛?
|
我想是lavajavac吧