永发信息网

下列java代码为什么上机输出的是”苹果“而不是“苹果好吃”??

答案:3  悬赏:50  手机版
解决时间 2021-02-01 16:27
  • 提问者网友:萌卜娃娃
  • 2021-01-31 22:47
public class EE {public static void main (String[]args){
String str =new String("苹果");
modify(str);
System.out.println(str);
}
public static void modify(String s){
s=s+"好吃";
}
}
最佳答案
  • 五星知识达人网友:拜訪者
  • 2021-02-01 00:02
哈哈,这牵涉到两个java的知识,一个是引用,一个是字符串常量池。String在java中虽然是引用传递,但是java对String做了优化,就是多个内容相同的字符串在内存中实际上只有一份,他们共享一段存储空间,所以为了安全,在修改一个字符串的时候实际上是重新开辟了一段内存。所以这里如果想得到 "苹果好吃" 的话需要像其他值传递的数据类型那样采用接收返回值的方式。
全部回答
  • 1楼网友:琴狂剑也妄
  • 2021-02-01 01:55
你没有改变str的引用地址,当然还是苹果 再看看别人怎么说的。
  • 2楼网友:詩光轨車
  • 2021-02-01 00:38
你需要把执行结果传出去,程序的执行是先进先出类型的,而且字符串指向的是一个内存地址,你看起来是s=s+"好吃"的s 与外界的s并不是同一个指针,当你的方法执行完毕后,资源全都会被释放,外面是怎么样还是怎么样,并不会改变。 应该改成public static String mod(String s){return s+"好吃";} 然后外面是s=mod(s);就行了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯