1. 程式人生 > 其它 >面向物件程式設計----程式執行過程的記憶體分析_02

面向物件程式設計----程式執行過程的記憶體分析_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

 class Test1 {

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);

 }

}