java 構造 statict_java學習:構造方法、static、final

在了解了java的基本數據結構后,開始學習java的類。

java中的類也是一種數據結構,我認為它和C中的結構體挺像。類中可以有屬性和方法。類的方法中比較特別的是構造方法。

java中類的構造方法要和類名相同,且沒有返回值。構造方法主要用于為類的對象定義初始化狀態,在new一個對象時,就會調用構造方法。每個java類都至少有一個構造方法,如果沒有顯式的定義構造方法,java編譯器會為我們提供一個默認的不帶參數的構造方法。構造方法不能夠直接調用,必須通過new關鍵字自動調用。

在學習構造方法的過程中,為了能夠看到默認的構造方法,使用了jdk提供的工具javap。這個反編譯工具在JDK安裝目錄的bin目錄下,使用javap反編譯工具,在控制臺下輸入javap point(類名,javap加載的一個類),就會將類的屬性和方法輸出。

在使用new關鍵字創建類的實例時,主要分為三個步驟,即為對象分配內存空間,引起對象構造方法的調用,并為對象返回一個引用。

當使用默認的構造方法初始化對象時,系統會默認的初始化對象的屬性,各個數據類型的默認值是:數值-0、boolean-false、char-‘\0’、對象-null。

this變量代表對象本身,當類中有兩個同名變量,一個是類的屬性,一個是方法中的局部變量,則用this區分類的屬性和局部變量。另外,也可以使用this簡化構造函數的調用,如:

Point(int n)

{

this.n = n;

}

Point()

{

this(1);

}

有了this的特性,一個類所有的對象調用的方法在內存中就可以只有一份拷貝,盡管在內存中可能有多個對象。但是數據成員在每個對象所在內存中都有一份拷貝。this允許了相同的方法為不同的對象工作。當一個對象調用一個方法時,this變量將被設置為引用該方法的特定的類對象。方法的代碼接著會與this所代表的對象的特定數據相關聯。

static關鍵字

在方法的返回值前或者變量的類型前加上static修飾,這些方法叫靜態方法,變量叫靜態變量。

靜態方法和靜態變量都屬于一個類,而不是屬于類的對象,也就是說,它在內存中只有一份拷貝。

靜態方法和靜態變量的可以通過類名直接引用,當然也可以通過對象調用靜態的方法。如靜態方法static void staticMethod(){} 引用方式可以為:A.staticMethod()、obj.staticMethod(),其中A為類名,obj為類的對象。

需要注意的是在靜態方法中不能夠調用非靜態的方法和使用非靜態的成員變量,假如靜態方法中使用了非靜態的變量或者調用了非靜態的方法,那么在使用類名引用該靜態方法時,系統無法知道這些非靜態的方法和變量如何處理。

final關鍵字

在java中沒有define,如果要定義常量的話,可以使用final來定義。常量在運行的時候不能被修改,所以常量需要在定義的時候賦值,如final int a = 3;另外一種方式是在構造函數中賦初值,如果有多個構造函數,則需要在每個構造函數中都賦值,但是如果某個構造函數中調用了其他的構造函數,則需要注意的是,要保證只能賦值一次。例如:

final int a;

Point(int n)

{

a = 3;

}

Point()

{

a = 4;

this(2);

}

如果沒有this(2)這句,上面的代碼編譯可以通過。如果有了this(2)這句,因為在Point()構造函數中調用了Point(int n)這個構造函數,而Point(int n)這個構造函數也對常量a賦值了,所以相當于對常量a進行了兩次的賦值,編譯就會報錯了。

為了節省內存,通常把常量也聲明為static。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/271122.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/271122.shtml
英文地址,請注明出處:http://en.pswp.cn/news/271122.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

微信終于可以發送大文件了!

來源丨擴展迷EXTFANS(ID:infinitydaily)https://mp.weixin.qq.com/s/EAwYnq7435oMQnz6JqkHYg微信作為一款國民級的通訊軟件,雖然用戶基數龐大,但在用戶體驗方面一直飽受詬病,尤其是在部分功能方面&#xff…

Iterable 超級接口

這是一個老祖宗,一代一代往下撥 collection 的方法如下,是一個跟接口方法如下,見API collection : add():添加一個元素     addAll():添加一組元素 clear();清空     remove(Object o) :移除     removeAll():移除一組元素     isEmpty();判斷集合…

pc寄存器or程序計數器

一:PC寄存器解釋 二:PC寄存器的作用

項目設計基礎:處理過程設計相關知識介紹?

處理過程設計關鍵是用一種適當的表示形式來描述每個模塊執行過程。常用的表示形式有圖形、語言、表格。比如傳統的框圖、判定表等。1、程序流程圖(Program Flow Chart)程序流程圖也成為程序框圖,是最早、流行最廣泛的一種圖形表示方法。程序流…

關于JS中的定時器!!!

定時器: 周期性定時器 一次性定時器 1. 周期性定時器: 讓程序每隔一段時間間隔,反復執行一項任務 何時使用: 只要連續,有規律的持續播放的動畫 如何使用: 3件事: 1. ***任務函數: 定時器每次執行的任務 function task(){...} 任務函數通常要…

python 更新數據庫歷史_python 實現數據庫中數據添加、查詢與更新的示例代碼

一、前言最近做web網站的測試,遇到很多需要批量造數據的功能;比如某個頁面展示數據條數需要達到10000條進行測試,此時手動構造數據肯定是不可能的,此時只能通過python腳本進行自動構造數據;本次構造數據主要涉及到在某…

git沖突“accept theirs”和“accept yours”

Accept Yours 就是直接選取本地的代碼,覆蓋掉遠程倉庫的 Accept Theirs 是直接選取遠程倉庫的,覆蓋掉自己本地的 我們選擇Merge,自己手動行進選擇、修改。 這里左邊部分是你本地倉庫的代碼,右邊部分是遠程倉庫的代碼,中間的res…

系統實施基礎:系統實施的相關知識介紹

1、系統實施的目的系統實施屬于新系統開發工作的最后一個階段,屬于交付系統給客戶的最后階段。2、系統實施的任務硬件準備:按照總體設計方案準備服務器、配置網絡系統。主要包括計算機主機/云服務器、輸入輸出設備、存儲設備、通信設備等。軟件準備&…

線程同步以及yield()、wait()、Notify()、Notifyall()

一、線程同步 1、線程同步的目的是為了保護多個線程訪問一個資源時對資源的破壞。2、線程同步方法是通過鎖來實現,每個對象都有切僅有一個鎖,這個鎖與一個特定的對象關聯,線程一旦獲取了對象鎖,其他訪問該對象的線程就無法再訪問該…

面試:整理面試中常被問到的8種數據結構

數據結構是一種特殊的組織和存儲數據的方式,可以使我們可以更高效地對存儲的數據執行操作。數據結構在計算機科學和軟件工程領域具有廣泛而多樣的用途。幾乎所有已開發的程序或軟件系統都使用數據結構。此外,數據結構屬于計算機科學和軟件工程的基礎。當…

python繪制繁花曲線代碼_使用python和pygame繪制繁花曲線的方法

前段時間看了一期《最強大腦》,里面各種繁花曲線組合成了非常美麗的圖形,一時心血來潮,想嘗試自己用代碼繪制繁花曲線,想怎么組合就怎么組合。真實的繁花曲線使用一種稱為繁花曲線規的小玩意繪制,繁花曲線規由相互契合…

Axure原型制作規范

一、 名詞定義: Sitemap 導航圖Widgets 組件Master 庫Label 控件名Interactions 交互動作Annotations 注釋Location and size 位置和尺寸二、 Widgets規范 本站常用widgets規范:命名規范:制定命名規范從而方便搜索和升級。 a. 全站使用&#…

系統測試相關知識筆記

1、系統測試的意義系統測試是為了發現系統中的錯誤而執行程序的過程,發現系統中存在的問題,及時處理掉,從而規避項目后續階段順利推進的風險、和高質量的軟件交付給客戶。2、系統測試的目的希望以最少的人力和時間發現潛在的各種錯誤和缺陷。…

最小生成樹練習1(克魯斯卡爾算法Kruskal)

今天刷一下水題練手入門,明天繼續。 poj1861 Network(最小生成樹)新手入門題。 題意:輸出連接方案中最長的單根網線長度(必須使這個值是所有方案中最小的),然后輸出方案。 題解:本題…

java變量不聲明可以直接使用嗎_我們可以在不使用Java進行初始化的情況下聲明最終變量嗎?...

在Java中,final是可與字段類和方法一起使用的access修飾符。當一個方法為final時,它不能被覆蓋。當變量為最終變量時,其值無法進一步修改。當類結束時,不能擴展。無需初始化即可聲明最終變量如果稍后聲明了最終變量,則…

系統測試:單元測試相關知識筆記

一、單元測試概念單元測試也成為模塊測試,在模塊編寫完成且無編譯錯誤后就可以進行。單元測試側重模塊中的內部處理邏輯和數據結構。如果采用機器測試,一般用白盒測試法。二、單元測試檢查模塊特征1、模塊接口模塊接口保證了測試模塊數據流可以正確地流入…

跨網段遠程調試vs_如何提高后臺服務應用問題的排查效率?日志 VS 遠程調試

轉眼間,距離Jerry最近一篇文章推送已經過去了一個多月的時間了。公眾號更新的頻率降低,不是因為Jerry偷懶,而是由于從春節過后,我所在的SAP成都研究院數字創新空間整個團隊,一直在忙一個5月份需要交付的項目上。Jerry每…