(23)物件呼叫非靜態方法執行過程、靜態方法呼叫記憶體執行過程
阿新 • • 發佈:2018-12-26
public class Person{
private String name;
private int age;
private static String country="cn";
static {
System.out.println("Demo.class啟動!!!");
}
{
System.out.println("預設的成員變數的值為:"+"name="+name+" "+"age="+age+"country="+Person.country);
}
Demo (String name,int age){
this.name=name;
this.age=age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static void showCountry() {
System.out.println("country="+country);
speak();//靜態方法體內可以呼叫靜態方法,方法只有被呼叫,才能執行,靜態方法用類名.成員呼叫
在同一個類中,類名.可以省略
//Person.speak();也可以這樣寫
}
public static void speak() {
System.out.println(說說說!!11");
}
}
呼叫:Person p=new Person("張三",33);
p.setName(“王五”);
物件呼叫非靜態方法記憶體圖示:
注意:呼叫非靜態方法,載入到棧中會有個this變數,誰呼叫它,它指向誰.當方法執行完後,在棧中的方法被釋放,再次呼叫該方 法時,再產生
靜態成員都在方法區中,呼叫用類名.方法名,與棧或者堆無關