Java成員變量,成員方法,構造方法和析構方法


一 成員變量

成員變量是指類的一些屬性定義,標志類的靜態特征,它的基本格式如下:

【訪問修飾符】【修飾符】【類型】【屬性名稱】= 【初始值】

訪問修飾符:public(公共的);protected(受保護的);無修飾符和private(私有的)。

修飾符:對屬性特征的描述:如static,final 等等。 

類型:屬性的數據類型,可以是任意類型。 

屬性名稱:任何合法標識符。 

初始值:賦值給屬性的初始值。 

舉例:public static int index = 0;

二 成員方法

成員方法就是對象所具有的動態功能。基本格式如下:

【訪問修飾符】【修飾符】【返回值類型】【方法名稱】【參數】【異常】【方法體】

訪問修飾符:public(公共的);protected(受保護的);無修飾符和private(私有的)。

修飾符:對屬性特征的描述:如static,final,abstract 等等。

返回值類型:方法返回數據的類型。

方法名稱:任何合法標識符。

參數:可以有多個,使用逗號分隔。

異常:關鍵字:throws 【具體異常】

方法體:該方法具體實現功能的地方。

案例:創建一個Book類

 1 public class Book {
 2 
 3     private int id;        //成員變量
 4     private String name;   //成員變量
 5 
 6     /**
 7      * 成員方法
 8      * @return
 9      */
10     public int getId() {
11         return id;
12     }
13 
14     /**
15      * 成員方法
16      * @return
17      */
18     public void setId(int id) {
19         this.id = id;
20     }
21 
22     /**
23      * 成員方法
24      * @return
25      */
26     public String getName() {
27         return name;
28     }
29 
30     /**
31      * 成員方法
32      * @return
33      */
34     public void setName(String name) {
35         this.name = name;
36     }
37 }

三 構造函數

構造函數:是特殊的成員方法,他的作用是創建對象並初始化成員變量。

構造函數定義規則:構造方法的方法名,必須和類名一致。

每個類都有一個隱藏的無參構造函數。

 1 public class Dog{
 2 
 3     /**
 4      * 帶參構造函數
 5      * @param name
 6      * @param age
 7      */
 8     public Dog(String name,int age){
 9         this.age = age;
10         this.name = name;
11     }
12 
13     /**
14      * 無慘構造函數
15      */
16     public Dog(){}
17 
18     String name;
19     int age;
20 
21     public void ptint(){
22         System.out.println("name = "+this.name+";age = "+age);
23     }
24 
25     public static void main(String[] args) {
26         new Dog().ptint();
27         new Dog("花花",9).ptint();
28     }
29 }

運行結果:

 

四 析構函數

析構函數:finalize();

垃圾回收器准備釋放內存的時候,會先調用finalize()。

在 Java 中,當你創建一個對象時,Java 虛擬機(JVM)為該對象分配內存、調用構造函數並開始跟蹤你使用的對象。當你停止使用一個對象(就是說,當沒有對該對象有效的引用時),JVM 通過垃圾回收器將該對象標記為釋放狀態。

當垃圾回收器將要釋放一個對象的內存時,它調用該對象的finalize() 方法(如果該對象定義了此方法)。垃圾回收器以獨立的低優先級的方式運行,只有當其他線程掛起等待該內存釋放的情況出現時,它才開始運行釋放對象的內存。(事實上,你可以調用System.gc() 方法強制垃圾回收器來釋放這些對象的內存。)

在以上的描述中,有一些重要的事情需要注意。首先,只有當垃圾回收器釋放該對象的內存時,才會執行finalize()。如果在 Applet 或應用程序退出之前垃圾回收器沒有釋放內存,垃圾回收器將不會調用finalize()。

其次,除非垃圾回收器認為你的 Applet 或應用程序需要額外的內存,否則它不會試圖釋放不再使用的對象的內存。換句話說,這是完全可能的:一個 Applet 給少量的對象分配內存,沒有造成嚴重的內存需求,於是垃圾回收器沒有釋放這些對象的內存就退出了。

顯然,如果你為某個對象定義了finalize() 方法,JVM 可能不會調用它,因為垃圾回收器不曾釋放過那些對象的內存。調用System.gc() 也不會起作用,因為它僅僅是給 JVM 一個建議而不是命令。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM