1. 面向?qū)ο蠛兔嫦蜻^程
面向過程
以事務(wù)為核心的編程思想,分析出解決問題的步驟,然后用程序按照順序去實現(xiàn)它圈膏,面向過程適合簡單的践盼、不需要協(xié)作的事務(wù)鸦采。
面向?qū)ο?/h4>
兩者關(guān)系
都是解決問題的思維方式,都是代碼組織的方式宏侍。兩者相輔相成赖淤,宏觀面向?qū)ο螅⒂^處理還是面向過程谅河。
什么是對象
內(nèi)存中是一堆代碼塊咱旱,表示一些相關(guān)聯(lián)的數(shù)據(jù)
對象和類
類可以看做是對象的模板/抽象。
public class SxStudent {
//屬性定義
int id;
String name;
int age;
//定義方法
void study(){
System.out.println("Study..");
}
public static void main(String[] args){
SxStudent stu = new SxStudent();
stu.study();
}
}
面向?qū)ο蟮膬?nèi)存分析
Java虛擬機內(nèi)存可以分為三個區(qū)域:
- 棧stack
- 堆heap
- 方法區(qū)method area
棧
1.描述的是方法執(zhí)行的內(nèi)存模型绷耍,每個方法被調(diào)用都會創(chuàng)建一個棧幀(存儲局部變量吐限、操作數(shù)、方法出口等)
2.JVM會為每個線程創(chuàng)建一個棧褂始,用于存放該線程執(zhí)行方法的信息(實際參數(shù)诸典、局部變量等)
3.棧屬于線程私有,不能實現(xiàn)線程間的共享
4.棧的存儲特性是“先進后出崎苗,后進先出”(子彈夾)
5.棧是由系統(tǒng)自動分配狐粱,速度快。棧是一個連續(xù)的內(nèi)存空間胆数。
堆
1.用于存儲創(chuàng)建好的對象和數(shù)組
2.JVM只有一個堆肌蜻,被所有線程共享
3.是一個不連續(xù)的內(nèi)存空間,分配靈活必尼,速度慢
方法區(qū)
1.JVM只有一個方法區(qū)蒋搜,被所有線程共享
2.方法區(qū)實際也是堆篡撵,只是用于存儲類、常量相關(guān)的信息
3.用來存放程序中永遠是不變或唯一的內(nèi)容