gif*_*pif 7 java pass-by-value
首先抱歉这个问题.这是一个非常古老的话题.
是的,我做了很多搜索,java是通过值传递的.
但是通过我的程序显示出来了.我不明白为什么?
我的节目是
class Dog{
static String dogName;
Dog(String name){
dogName=name;
}
public void setName(String newName){
dogName=newName;
}
public String getName(){
return dogName;
}
}
class JavaIsPassByValue{
public static void main(String arr[]){
Dog dog1=new Dog("OldDog");
new JavaIsPassByValue().display(dog1);
System.out.println(dog1.getName());
}
public void display(Dog d){
System.out.println(d.getName());
d = new Dog("NewDog");
System.out.println(d.getName());
}
}
Run Code Online (Sandbox Code Playgroud)
输出是,
OldDog
NewDog
NewDog
但我期待
OldDog
NewDog
OldDog
请任何人告诉我我错在哪里.
你的问题是你使用staticDogName.
因此,当您调用Dog的构造函数时,您正在为所有Dog对象更改DogName的值(因为实际上只有一个值).
static String dogName;
Dog(String name){
dogName=name;
}
Run Code Online (Sandbox Code Playgroud)
将您的代码更改为:
String dogName;
Dog(String name){
dogName=name;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
146 次 |
| 最近记录: |