我想了解java类和对象的关系,但面临一个问题。逻辑无法理解
这里我有一个简单的Java bean类:
public class Student {
int id;
String name;
String marks;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMarks() {
return marks;
}
public void setMarks(String marks) {
this.marks = marks;
}
}
和一个编辑器类:
public class EditStudent {
public static void editStd(Student st){
st.setId(10);
st.setName("editAbleName");
st.setMarks("133");
// return st;
}
我写这个逻辑学生对象在我的程序类:
public class TestProgram {
public static void main(String args[]){
System.out.println("main");
Student std = new Student();
std.setId(1);
std.setName("zeeshan");
std.setMarks("44");
EditStudent.editStd(std);
System.out.println("id " +std.getId());
System.out.println("name " +std.getName());
System.out.println("marks " +std.getMarks());
}
}
输出:
main
id 10
name editAbleName
marks 133
我想我会得到我在我的测试程序类上设置的对象的输出值,但获得了我在我的EditStudent
类上设置的输出值。 为什么会发生这种情况,即使我认为我的std
对象和editStudent
类之间没有关系? 请解释一下逻辑发生在这个逻辑和过程之后!
因为EditStudent修改通过引用的对象的值的参数。 –
'std'是**不是**对象。它是对象的引用。请参阅[Java是否为“通过引用传递”或“按值传递”?](http://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass-by-价值) –
它的一点点帮助,但需要更清楚地探索 –