Java程序編譯器是根據代碼結構來進行編譯處理的,執行的時候也是根據代碼結構來處理的。
如果在構造方法上使用void,那么此結構就會與普通方法的結構相同,這樣編譯器會認為此方法是一個
普通方法,而普通方法與構造方法最大的區別在於構造方法是在類對象實例化的時候調用的,而
普通方法是在類對象實例化產生之后調用的。
舉例:
public class Student{
private String name;
//定義Student有參構造方法
public Student(String name){
this.name = name;
System.out.println("調用Student有參構造方法,初始化Student name");
}
//定義getName()方法,獲取Student name
public String getName(){
System.out.println("調用getName(),獲取Student name");
return name;
}
public static void main(String[] args) {
Student student = new Student("Jack Ma");
String studentName = student.getName();
System.out.println("學生姓名:" + studentName);
}
}
運行Debug模式,查看運行結果
調用Student有參構造方法,初始化Student name
調用getName(),獲取Student name
學生姓名:Jack Ma
分析:
Student student = new Student("Jack Ma");
1、通過new Student() 為Student 在堆內存中創建一個內存空間,此時name=null 2、調用Student有參構造方法Student(String name),通過this.name = name為Student name進行初始化, 此時name=Jack Ma。由此可知,構造方法是在類對象實例化的時候調用的。 String studentName = student.getName();
System.out.println("學生姓名:" + studentName);
3、類對象student實例化后,調用getName(),獲取Student name。可見,getName()作為普通方法是在類對象實例化產生之后調用的。 4、最后打印結果:學生姓名:Jack Ma。