首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

问个String的有关问题,大家帮小弟我解答一下

2012-02-20 
问个String的问题,大家帮我解答一下publicclassTestString{publicstaticlink(Stringa){a+World }publi

问个String的问题,大家帮我解答一下
public   class   TestString{
public   static   link(String   a){
a   +=   "World ";

}
public   static   void   main(String[]   args){
String   a   =   "Hello ";
link(a);
System.out.println(a);
}
}
最后显示是Hello;   不是已经调用了link了吗?为什么“world”没有加上去。

为什么输出的字符串还是原来的那个呢?请大家仔细的给我解答一下,谢谢

[解决办法]
这就是String的不变性,a += "World ";会产生一个新的对像.而且马上会变成垃圾.
变量a还是原来的Hello
[解决办法]
public static link(String a){
a += "World ";
System.out.println(a)

}
这样输出就是hello world了
[解决办法]
可以通过编译??不敢相信呀!!连返回值都没有?真不知道是不是能通过/
可能是我学艺不精吧!我就先看到了这一点。
[解决办法]
学习
[解决办法]
mark
[解决办法]
public static String link(String a){
return a+ "World "
}
System.out.println(link(a));

[解决办法]
月经贴。。。。
[解决办法]
首先你在link方法中并没用直接输出 字符串a,或者讲方法link定义为一个返回整形int类型的方法并用return来返回,你的确在link方法中修改了a但是主函数中的a还是hello
所以没有输出你想要的结果
[解决办法]
public class TestString{
public static link(String a){
a += "World ";

}
public static void main(String[] args){
String a = "Hello ";
link(a);
System.out.println(a);
}
}

LZ 先从主函数main 入手。定义一个string形的a,并且赋值“Hello”。调用like方法,将a传递给link(String a)方法。(其实这个问题的重点是参数传递,参数传递的实质是对象副本的传递,也就说你将a传递给了like()方法,虽然在此方法中将a+= "World ",但a的实质没有发生任何改变,也就是说a的副本发生了改变,而a的本身没有发生任何改变).

如果是这样的话 a就会发生改变(我简单举个例子):
public class TestString{
public static link(char a[]){
char[0]= 'w ';
}
public static void main(String[] args){
char a[] ={ 'h ', 'e '}
link(a[]);
System.out.println(a);
}
}
输出的将是 we,而不是he
[解决办法]
基本类型只修改副本,不修改变量,对象类型不修改引用,只修改引用的对象
[解决办法]
这样的问题,GOOGLE一下或者搜索下CSDN以前的帖子多的是,就知道问

热点排行