1.創建對象內存圖
package cn.itcast.oop;
public class PhoneDemo {
public static void main(String[] args) {
Phone p = new Phone();
//給成員變量賦值
p.brand = "小米";
p.price = 1999;
p.color = "紅色";
System.out.println(p.brand+"---"+p.price+"---"+p.color);
//調用方法
p.call("風清揚");
p.sendMessage();
p.playGame();
//第二個手機
Phone p2 = new Phone();
//給成員變量賦值
p2.brand = "華爲";
p2.price = 1699;
p2.color = "黑色";
System.out.println(p2.brand+"---"+p2.price+"---"+p2.color);
//調用方法
p2.call("令狐沖");
p2.sendMessage();
p2.playGame();
}
}
class Phone{
String brand;//品牌
int price;//價格
String color;//顏色
//打電話
public void call(String name){
System.out.println("給"+name+"打電話");
}
//發短信的方法
public void sendMessage() {
System.out.println("羣發短信");
}
//玩遊戲的方法
public void playGame() {
System.out.println("玩遊戲");
}
}
步驟:
1.加載類的字節碼對象,PhoneDemo.class 以及Phone.class-->在方法區的class內容區域
2.main方法進棧,同時開闢一段內存給main方法
3.Phone p-->在堆內存中new一個Phone對象開闢一段內存空間,進行初始化值brand=null;price=0;color=null;
4.賦值給p的屬性進行賦值,brand變爲小米,price變爲1999,color變爲灰色,此時的p指向了堆內存中的new Phone()對象
5.調用p.call方法-->進棧執行完程序 出棧,調用p.senMessage方法-->進棧執行完程序 出棧,調用p.playGame方法-->進棧執行完程序 出棧.
6.同理p2指向堆內存中new出來的Phone().... 注:地址不同.
2.靜態的理解:
靜態變量是存在於方法區中的靜態區中,是隨着類的加載而加載,是專屬於類的,而不是專屬於某個單獨的對象的,每一個對象都可以共享靜態變量.