public class CopyTest {
public static void main(String[] args) {
CopyTest newCopy = new CopyTest();
MyString a1 = new MyString("SAM");
MyString a2 = new MyString();
System.out.println("MyString的值是:" + a1.getValue() + " MyString的长度是:" + a1.getLength());
newCopy.StringCopy(a1, a2);
System.out.println("函数调用后的结果:" + a2.getValue());
}
public int StringCopy(MyString src, MyString des)
{
des = src;
System.out.println("MyString的值是:" + des.getValue() + " MyString的长度是:" + des.getLength());
return 0;
}}
class MyString
{
private String value;
private int length;
public MyString()
{
value = new String();
length = 0;
}
public MyString(String init)
{
this.setString(init);
}
public String getValue()
{
return value;
}
public int getLength()
{
return length;
}
public void setString(String value)
{
this.value = value;
this.length = value.length();
}
}
返回的结果是:
MyString的值是:SAM MyString的长度是:3
MyString的值是:SAM MyString的长度是:3
函数调用后的结果:按道理主函数在调用StringCopy的时候,传进去的应该是MyString的一个引用,在函数体里面引用改变了,但是在主函数里查看到的引用还是空的呢?请前辈们指点一下!
a1,src-->new String("SAM");a2,dst-->new String("")
调用时并没有改变a2所指的对象new String(""),只是句柄dst转而指向了a1所指对象