public class Welcome
{
public static void main(String[] args)
{
Dog dog = new Dog("bush"); System.out.println(dog.getName());
Test(dog);
System.out.println(dog.getName());
}
public static void Test(Dog dog){
dog.setName("obama");
}
}public class Dog {
private String Name;
public Dog(String Name){
this.Name = Name;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}}
输出bush
obama为何?dog对象不是被拷贝一份然后传入函数再进行操作吗?如何能改变原始的那个dog对象的内容?
{
public static void main(String[] args)
{
Dog dog = new Dog("bush"); System.out.println(dog.getName());
Test(dog);
System.out.println(dog.getName());
}
public static void Test(Dog dog){
dog.setName("obama");
}
}public class Dog {
private String Name;
public Dog(String Name){
this.Name = Name;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}}
输出bush
obama为何?dog对象不是被拷贝一份然后传入函数再进行操作吗?如何能改变原始的那个dog对象的内容?
那如果函数的形参是int 类型,那就是拷贝了吧。
那意思是:比如:change(int y)
{
y=10;
return y;
}main(){
x=5;
change(x);
}这样不会改变x的值咯?
因为int是字面值类型变量,就是直接复制值
而String是引用类型变量,它的值是一个"地址值",也是一个值而已.但这个值是地址值.
int的值是数字,复制数值
String的值是地址值,也就是对象的引用.复制的是引用.