一個典型類的定義:
1 /**
2 * 一個典型類的定義 3 * @author 房廷飛 4 * 5 */
6 public class TextObject { 7 //屬性
8 int id; 9 String name; 10 int age; 11 //方法
12 Computer com; 13 void study() { 14 System.out.println("我在認真學習!"+com.brand); 15
16 } 17 void play() { 18 System.out.println("我在玩游戲!王者農葯!"); 19
20 } 21 //構造方法,用於創建這個類的對象。無參的構造方法可以由系統自動創建。
22 TextObject() { 23
24 } 25 //程序執行的入口,必須要有!
26 public static void main(String[]args) { 27 TextObject text =new TextObject(); //創建一個對象
28 text.id=1001; 29 text.age=18; 30 text.name="房廷飛"; 31 Computer c1=new Computer(); 32 c1.brand="聯想"; 33 text.com=c1; 34 text.play(); 35 text.study(); 36 } 37 } 38 //一個java文件可以有多個class類,但只能有一個public修飾的類
39 class Computer{ 40 String brand; 41 }
Java虛擬機的內存可以分為三個區域:棧stack、堆heap、方法區method area。
棧的特點如下:
1. 棧描述的是方法執行的內存模型。每個方法被調用都會創建一個棧幀(存儲局部變量、操作數、方法出口等)
2. JVM為每個線程創建一個棧,用於存放該線程執行方法的信息(實際參數、局部變量等)
3. 棧屬於線程私有,不能實現線程間的共享!
4. 棧的存儲特性是“先進后出,后進先出”
5. 棧是由系統自動分配,速度快!棧是一個連續的內存空間!
堆的特點如下:
1. 堆用於存儲創建好的對象和數組(數組也是對象)
2. JVM只有一個堆,被所有線程共享
3. 堆是一個不連續的內存空間,分配靈活,速度慢!
方法區(又叫靜態區)特點如下:
1. JVM只有一個方法區,被所有線程共享!
2. 方法區實際也是堆,只是用於存儲類、常量相關的信息!
3. 用來存放程序中永遠是不變或唯一的內容。(類信息【Class對象】、靜態變量、字符串常量等)
UML圖示例:
2019-02-14 21:29:55 房廷飛