我想了解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-價值) –
它的一點點幫助,但需要更清楚地探索 –