站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题关于JAVA参数传输方式的问题 急急急~~~~

关于JAVA参数传输方式的问题 急急急~~~~

摘要: 关于JAVA参数传输方式的问题 急急急~~~~


各位大虾,我有一事不明白,希望指点!
关于java 传送参数的问题,如下:
public class StrTEST{
public String string;
public StringBuffer stringbuffer;
public void setStr(String string){
string+=new String("改变了String");
}
public void setStringBuffer(StringBuffer stringbuffer){
stringbuffer.append("改变了Stringbuffer");
}
public void printStr(){
System.out.println(this.string);
System.out.println(this.stringbuffer);
}
public StrTEST(){
this.string=new String("一个默认的String值:");
this.stringbuffer=new StringBuffer("一个默认的StringBuffer值:");

this.setStr(this.string); //传引用
this.setStringBuffer(this.stringbuffer);//传引用
this.printStr();
}
public static void main(String [] args){
new StrTEST();
}
}
我想通过setStr方法改变string的值,通过setStringBuffer改变stringbuffer的值
结果是后者改变成功,前者失败,不明白~~~~希望指点
***************************************************************************************
在网上找到一篇文章
public class Test {
public static void test(String str) {
str = "World";
}
public static void main(String[] args) {
String string = "Hello";
test(string);
System.out.println(string);
}
}
运行结果:
Hello
  为什么会这样呢?因为参数 str 是一个引用,而且它与 string 是不同的引用,虽然它们都是同一个对象的引用。str = "World" 则改变了 str 的值,使之指向了另一个对象,然而 str 指向的对象改变了,但它并没有对 "Hello" 造成任何影响,而且由于 string 和 str 是不同的引用,str 的改变也没有对 string 造成任何影响,结果就如例中所示。
***************************************************************************************
小弟不明白String类型的就是"string 是不同的引用"呢?

解决问题马上划分!谢谢各位





public String string;
public void setStr(String string){
string+=new String("改变了String");
}
参数与类变量同名
修改为
this.string+=new String("改变了String");
即可


感谢楼上的兄弟回答,但是我不明白stringbuffer为什么就不用this.stringbuffer就可以改变它的值呢?


因为setStr方法中,参数string和类变量同名了
如果你用这个变量的话,只是在操作参数,要访问类变量就要用this来修饰
而另外一个方法中不存在同名问题
用不用this结果都一样


redduke1202()你好!我java是懂得不多!
我现在疑惑是:
类成员变量:stringbuffer
在方法:setStringBuffer(StringBuffer stringbuffer)中参数也是有一个"stringbuffer",
为什么不用this.stringbuffer就能改变呢?


String和StringBuffer的区别就是String运算时产生一个新的引用, 而不改变原引用的值,StringBuffer则是改变原值。


谢谢大家,问题已解决~~~~


↑返回目录
前一篇: 一个基本的语法问题,在线等。(100分)
后一篇: URL传递参数中含有特殊符问题!100分相赠