大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java學(xué)習(xí) Java靜態(tài)常量的定義

Java靜態(tài)常量的定義

更新時間:2022-10-21 11:48:51 來源:動力節(jié)點 瀏覽1853次

在任何開發(fā)語言中,都需要定義常量。在Java開發(fā)語言平臺中也不例外。不過在Java常量定義的時候,跟其他語言有所不同。其有自己的特色。在這篇文章中,主要針對Java語言中定義常量的注意事項進行解析,幫助各位程序開發(fā)人員更好的掌握常量的定義與管理工作。

1.常量定義的基本注意事項

在Java語言中,主要是利用final關(guān)鍵字(在Java類中靈活使用Static關(guān)鍵字)來進行Java常量定義。當常量被設(shè)定后,一般情況下就不允許再進行更改。如可以利用如下的形式來定義一個常量:finaldouble PI=3.1315。在定義這個常量時,需要注意如下內(nèi)容:

一是Java常量定義的時候,就需要對常量進行初始化。也就是說,必須要在常量聲明時對其進行初始化。都跟局部變量或者成員變量不同。當在常量定義的時候初始化過后,在應(yīng)用程序中就無法再次對這個常量進行賦值。如果強行賦值的話,數(shù)據(jù)庫會跳出錯誤信息,并拒絕接受這一個新的值。

二是final關(guān)鍵字使用的范圍。這個final關(guān)鍵字不僅可以用來修飾基本數(shù)據(jù)類型的常量,還可以用來修飾對象的引用或者方法。如數(shù)組就是一個對象引用。為此可以使用final關(guān)鍵字來定義一個常量的數(shù)組。這就是Java語言中一個很大的特色。一旦一個數(shù)組對象被final關(guān)鍵字設(shè)置為常量數(shù)組之后,它只能夠恒定的指向一個數(shù)組對象,無法將其改變指向另外一個對象,也無法更改數(shù)組(有序數(shù)組的插入方法可使用的二分查找算法)中的值。

三是需要注意常量的命名規(guī)則。不同的語言,在定義變量或者常量的時候,都有自己一套編碼規(guī)則。這主要是為了提高代碼的共享程度與提高代碼的易讀性。在Java常量定義的時候,也有自己的一套規(guī)則。如在給常量取名的時候,一般都用大寫字符。在Java語言中,大小寫字符是敏感的。之所以采用大寫字符,主要是跟變量進行區(qū)分。雖然說給常量取名時采用小寫字符,也不會有語法上的錯誤。但是,為了在編寫代碼時能夠一目了然的判斷變量與常量,最好還是能夠?qū)⒊A吭O(shè)置為大寫字符。另外,在常量中,往往通過下劃線來分隔不同的字符。而不想對象名或者類名那樣,通過首字符大寫的方式來進行分隔。這些規(guī)則雖然不是強制性的規(guī)則,但是為了提高代碼友好性,方便開發(fā)團隊中的其他成員閱讀,這些規(guī)則還是需要遵守的。沒有規(guī)矩,不成方圓。

總之,Java開發(fā)人員需要注意,被定義為final的常量需要采用大寫字母命名,并且中間最好使用下劃線作為分隔符來進行連接多個單詞。在定義final的數(shù)據(jù)不論是常量、對象引用還是數(shù)組,在主函數(shù)中都不可以改變。否則的話,會被編輯器拒絕并提示錯誤信息。

2.Final關(guān)鍵字與static關(guān)鍵字同時使用

由于Javal是面向?qū)ο蟮恼Z言,所以在Java常量定義的時候還有與其它編程語言不同的地方。如一段程序代碼從編輯到最后執(zhí)行,即使需要經(jīng)過兩個過程,分別為代碼的裝載與對象的建立。不同的過程對于常量的影響是不同的。現(xiàn)在假設(shè)有如下的代碼:

Privatestatic Random rd1=new Random(); //實例化一個隨機數(shù)生成對象。
Private finalint int1=rd1.nestInt(10); //生成隨機數(shù)并賦值給常量int1
Privatestatic final int int2=rd1.nestInt(10); //生成隨機數(shù)并賦值給常量int2

這上面的語句的大致含義是,通過Java語言提供的隨機數(shù)類對象,生成隨機數(shù)。并把生成的隨機數(shù)賦值給常量int1與int2。細心的讀者會發(fā)現(xiàn),雖然同樣是賦值語句,但是以上兩個語句中有一個細小的差別,即在第二條語句中多了一個關(guān)鍵字static。關(guān)于關(guān)鍵字的用途,筆者在以前的文章中也有談到過。這個是一個靜態(tài)的概念。即當利用這個關(guān)鍵字來修飾一個變量的時候,在創(chuàng)建對象之前就會為這個變量在內(nèi)存中創(chuàng)建一個存儲空間。以后創(chuàng)建對對象如果需要用到這個靜態(tài)變量,那么就會共享這一個變量的存儲空間。也就是說,在創(chuàng)建對象的時候,如果用到這個變量,那么系統(tǒng)不會為其再分配一個存儲空間,而只是將這個內(nèi)存存儲空間的地址賦值給他。如此做的好處就是可以讓多個對象采用相同的初始變量。當需要改變多個對象中變量值的時候,只需要改變一次即可。從這個特性上來說,其跟常量的作用比較類似。不過其并不能夠取代常量的作用。

那么以上兩條語句有什么差別嗎?我們首先來看Private final int int1=rd1.nestInt(10)這條語句。雖然int1也是一個常量,但是其是在對象建立的時候初始化的。如現(xiàn)在需要創(chuàng)建兩個對象,那么需要對這個變量初始化兩次。而在兩次對象初始化的過程中,由于生成的隨機數(shù)不同,所以常量初始化的值也不同。最后導(dǎo)致的結(jié)果就是,雖然int1是常量,但是在不同對象中,其值有可能是不同的。可見,使用final的Java常量定義并不是恒定不變的。因為默認情況下,定義的常量是在對象建立的時候被初始化。如果在建立常量時,直接賦一個固定的值,而不是通過其他對象或者函數(shù)來賦值,那么這個常量的值就是恒定不變的,即在多個對象中值也使相同的。但是如果在給常量賦值的時候,采用的是一些函數(shù)或者對象(如生成隨機數(shù)的Random對象),那么每次建立對象時其給常量的初始化值就有可能不同。這往往是程序開發(fā)人員不原意看到的。有時候程序開發(fā)人員希望建立再多的對象,其在多個對象中引用常量的值都是相同的。

要是現(xiàn)這個需求的話,有兩個方法。一是在給常量賦值的時候,直接賦予一個固定的值,如abcd等等。而不是一個會根據(jù)環(huán)境變化的函數(shù)或者對象。像生成隨機數(shù)的對象,每次運行時其結(jié)果都有可能不能。利用這個對象來對常量進行初始化的時候,那么結(jié)果可能每次創(chuàng)建對象時這個結(jié)果都有可能不同。最后這個常量只能夠做到在一個對象內(nèi)是恒定不變的,而無法做到在一個應(yīng)用程序內(nèi)是恒定不變的。另外一個方法就是將關(guān)鍵字static與關(guān)鍵字final同時使用。一個被定義為final的對象引用或者常量只能夠指向唯一的一個對象,不可以將他再指向其他對象。但是,正如上面舉的一個隨機數(shù)的例子,對象本身的內(nèi)容的值是可以改變的。為了做到一個常量在一個應(yīng)用程序內(nèi)真的不被更改,就需要將常量聲明為staitc final的常量。這是什么意思呢?正如上面筆者所說的,當執(zhí)行一個應(yīng)用程序的時候,可以分為兩個步驟,分別為代碼裝載與對象創(chuàng)建。為了確保在所有情況下(即創(chuàng)建多個對象情況下)應(yīng)用程序還能夠得到一個相同值的常量,那么就最好告訴編譯器,在代碼裝載的時候就初始化常量的值。然后在后續(xù)創(chuàng)建對象的時候,只引用這個常量對象的地址,而不對其再進行再次初始化。就如同Private static final int int2=rd1.nestInt(10)這種形式來定義常量。如此,在后續(xù)多次創(chuàng)建對象后,這個常量int2的值都是相同的。因為在創(chuàng)建對象時,其只是引用這個常量,而不會對這個常量再次進行初始化。

由于加上這個static關(guān)鍵字之后,相當于改變了Java常量定義的作用范圍。為此程序開發(fā)人員需要了解自己的需求,然后選擇是否需要使用這個關(guān)鍵字。在初始化常量的時候,如果采用函數(shù)(如系統(tǒng)當前時間)或者對象(如生成隨機數(shù)的對象)來初始化常量,可以預(yù)見到在每次初始化這個常量時可能得到不同的值,就需要考慮是否要采用這個static關(guān)鍵字。一般情況下,如果只需要保證在對象內(nèi)部采用這個常量的話,那么這個關(guān)鍵字就可有可無的。但是反過來,如果需要在多個對象中引用這個常量,并且需要其值相同,那么就必須要采用static這個關(guān)鍵字了。以確保不同對象中都只有一個常量的值。或者說,不同對象中引用的常量其實指向的是內(nèi)存中的同一塊區(qū)域。

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 在线看国产精品 | 国产免费人成在线视频视频 | 四虎影院免费观看视频 | 99爱在线视频 | 久久久91精品国产一区二区三区 | 日韩 视频在线播放 | 男人的天堂一区二区视频在线观看 | 岛国不卡| 欧美影院 | 国产日产欧美精品一区二区三区 | 在线观看理论片 | 91久久综合| 看大片全色黄大色黄 | 久久婷婷成人综合色 | 精品亚洲综合久久中文字幕 | 天天干天天射天天操 | 波多野结衣中文字幕久久 | 久久免费精品视频在线观看 | 国产亚洲精品福利 | 日韩成人| 99在线观看精品视频 | 天天做天天爽爽快快 | 毛片网站免费在线观看 | 欧美一区二区三区影院 | 久久这里只有精品久久 | 天天干天天干天天 | 久久综合一区 | 久久这里只有精品免费看青草 | 亚洲国产成人久久午夜 | 免费观看一级欧美在线视频 | 国产一级做a爱片久久毛片a | 玖玖玖精品视频免费播放 | 国产精品亚洲一区二区三区 | 色偷偷91综合久久噜噜 | 一本大道香蕉久在线不卡视频 | 99国产精品久久久久久久成人热 | 天天干天天综合 | 五月婷婷社区 | 精品久久久久久久 | 久久好看视频 | 欧美色视频超清在线观看 |