初学java求问一下

sitinl 2014-10-27 09:55:41
是想把原来的字符串"Hello"的引用通过datachange()方法变成"Hello world"可是我怎么也变不了,它还是“Hello"
代码:
public class Test2 {
private static String sb = null;

public static void main(String[] args) {
sb = "Hello ";
System.out.println("Before change, sb = " + sb);
changeData(sb);
System.out.println("After changeData(n), sb = " + sb);
}

public static String changeData(String strBuf) {
strBuf = "Hello world";
sb = strBuf;
System.out.println("method strBuf = " + strBuf);
System.out.println("method sb = " + sb);
return sb;
}
}
...全文
328 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
南猿北辙 2014-11-13
  • 打赏
  • 举报
回复
楼主上面的方法 输出结果没有问题的 但如果静态方法改为如下 public static String changeData(String sb) { sb = "Hello world"; //sb = strBuf; //System.out.println("method strBuf = " + strBuf); System.out.println("method sb = " + sb); return sb; } 则就涉及到成员变量 与局部变量的问题了 这里的sb 和成员变量 不是一个概念
mlybcao 2014-11-06
  • 打赏
  • 举报
回复
你改变了全局变量的值sb。
政政乔 2014-11-06
  • 打赏
  • 举报
回复
引用类型一旦创建对象,就无法再改变它的地址
灯火-阑珊 2014-10-30
  • 打赏
  • 举报
回复
如果第5行是String sb = "Hello";那么在main方法中第10行打印的使用的就是该方法中定义的变量sb,也就是第五行的值,所有打印出来肯定是Hello了;changeData方法中给sb赋值的时候是赋值到全局变量上去了
sitinl 2014-10-27
  • 打赏
  • 举报
回复
怎么都没人来回答了。我很虚心求学的啊。。。。
sitinl 2014-10-27
  • 打赏
  • 举报
回复
void main 里的变量 在datachange里是可见还是不可见?void main里的变量是全局变量还是局部变量?
sitinl 2014-10-27
  • 打赏
  • 举报
回复
对不起写错了,第5行是 String sb = "Hello" 你再执行一下。我没搞懂这前面有没有String 结果还完全不一样。
百曉生 2014-10-27
  • 打赏
  • 举报
回复
我的结果没问题啊——
楼主使用eclipse吧
楼主要不新建java项目新建类再试试

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧