面向物件程式設計----程式執行過程的記憶體分析_02
記憶體分析:
新建一個類檔案Student
package cn.Test.oop;
/**
* 以類的方式組織程式碼,以物件的方式封裝(組織)資料!
操作物件就是操作它的地址!
物件以類為模板來的!
所有的引用型別都是4個位元組!
* @author 神奇的夢
*
*/
public class Student {
//屬性:靜態的資料 private 私有
// 成員變數你不初始化,系統會幫你初始化一下
String name;
int id; //學號
int age;//年齡
String gender;//性別
int weight;//體重
// 加一個屬性
Computer computer;
//動態的行為
public void study() {
System.out.println(name+"在學習");
}
public void sayHello(String sname) {
System.out.println(name+"向"+sname+"說:你好!");
}
}
新建一個類檔案Computer
package cn.Test.oop;
public class Computer {
String brandq;//品牌
int cpuSpeedq;//cpu熟讀
}
新建一個類檔案Test1
package cn.Test.oop;
public
public static void main(String[] args) {
//通過類載入器class loader載入Student類,載入後,在方法區中就有了Student類的資訊!
Student s1=new Student();
s1.name ="杯子";
s1.sayHello("白色杯子");
Student s2=new Student();
s2.age=10;
s2.name="華為手機";
}
}
新建一個類檔案Test2
package cn.Test.oop;
// test2是最先被載入的
public class Test2 {
public static void main(String[] arge) {
// 這裡必須載入test1,test2
Student s1=new Student();
s1.name ="ss";
s1.age=19;
System.out.println(s1.name);
// Computer載入computer類
// 需要載入Computer類
// Computer類的資訊
// 1.程式碼
// 2.static
// 3.常量池
// new一個模板在方法區裡
// 把建出來的模板的地址,給了變數c(地址)
Computer c = new Computer();
// 然後把方法區裡面的常量池"聯想",給了brandp地址然後指向變數c
c.brandq = "聯想";
// 如果是物件的話除了八種資料型別之外的話都是null
// 如果是數字預設是0小數是0.0
// boolean預設是false
// char: 反斜槓u0000 表示一個unknown也是0
// cpuSpeedq(這裡可以直接賦值)地址然後指向變數c
c.cpuSpeedq = 100;
System.out.println(c.brandq);
// 我想把這臺電腦給沒有一個人
// 通過s1.computer.brand可以找到品牌
// 把c的值(引用地址)給了s1.compute
// 這樣就可以通過s1.compute找到c指向的堆了的堆了
s1.computer=c;
System.out.println(s1.computer.brandq);
c.brandq="戴爾";
System.out.println(s1.computer.brandq);
}
}