java知识点7——面向过程和面向对象、面向对象的内存分析、构造方法
面向過程和面向?qū)ο?/h3>
- 解決簡單問題可以使用面向過程
- 解決復(fù)雜問題:宏觀上使用面向?qū)ο蟀盐?#xff0c;微觀處理上仍然是面向過程。
- 面向?qū)ο缶哂腥筇卣?#xff1a;封裝性、繼承性和多態(tài)性,而面向過程沒有繼承性和多態(tài)性,并且面向過程的封裝只是封裝功能,而面向?qū)ο罂梢?span style="color:#f33b45;">封裝數(shù)據(jù)和功能。所以面向?qū)ο髢?yōu)勢更明顯。
屬性(field,或者叫成員變量)
- 屬性用于定義該類或該類對象包含的數(shù)據(jù)或者說靜態(tài)特征。
-
屬性作用范圍是整個類體。
面向?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)線程間的共享!
? ? ? ? 5. 棧是由系統(tǒng)自動分配,速度快!棧是一個連續(xù)的內(nèi)存空間!
- 堆的特點如下:
1. 堆用于存儲創(chuàng)建好的對象和數(shù)組(數(shù)組也是對象)
2. JVM只有一個堆,被所有線程共享
3. 堆是一個不連續(xù)的內(nèi)存空間,分配靈活,速度慢!
- 方法區(qū)(又叫靜態(tài)區(qū))特點如下:
1. JVM只有一個方法區(qū),被所有線程共享!
2. 方法區(qū)實際也是堆,只是用于存儲類、常量相關(guān)的信息!
3. 用來存放程序中永遠是不變或唯一的內(nèi)容。(類信息【Class對象】、靜態(tài)變量、靜態(tài)方法、字符串常量等)
構(gòu)造方法
? ? ? ? ?構(gòu)造器也叫構(gòu)造方法(constructor),用于對象的初始化。構(gòu)造器是一個創(chuàng)建對象時被自動調(diào)用的特殊方法,目的是對象的初始化。
? ? ? ?1. 通過new關(guān)鍵字調(diào)用!!
2. 構(gòu)造器雖然有返回值,但是不能定義返回值類型(返回值的類型肯定是本類),不能在構(gòu)造器里使用return返回某個值。
3. 如果我們沒有定義構(gòu)造器,則編譯器會自動定義一個無參的構(gòu)造函數(shù)。如果已定義則編譯器不會自動添加。
案例:
? ? ? ?1. 定義一個“點”(Point)類用來表示二維空間中的點(有兩個坐標)。要求如下:
(1) 可以生成具有特定坐標的點對象。
(2) 提供可以設(shè)置坐標的方法。
(3)提供可以計算該“點”距另外一點距離的方法。
class Point{double x,y;public Point(double _x,double _y) {x=_x;y=_y;}public double getDistance(Point p) {return Math.sqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y));} } public class TestConstructor {public static void main(String[] args) {Point p=new Point(3.0,4.0);Point origin=new Point(0.0,0.0);System.out.println(p.getDistance(origin));} }運行結(jié)果:5.0
總結(jié)
以上是生活随笔為你收集整理的java知识点7——面向过程和面向对象、面向对象的内存分析、构造方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java的知识点6—— 强制类型转换、基
- 下一篇: java知识点8——垃圾回收原理和算法、