java中定義常量方法
阿新 • • 發佈:2018-12-31
一、常量定義的基本注意事項。
在Java語言中,主要是利用final關鍵字(在Java類中靈活使用Static關鍵字)來定義常量。當常量被設定後,一般情況下就不允許再進行更改。如可以利用如下的形式來定義一個常量:final double PI=3.1315。在定義這個常量時,需要注意如下內容:
一是常量在定義的時候,就需要對常量進行初始化。也就是說,必須要在常量宣告時對其進行初始化。都跟區域性變數或者成員變數不同。當在常量定義的 時候初始化過後,在應用程式中就無法再次對這個常量進行賦值。如果強行賦值的話,資料庫會跳出錯誤資訊,並拒絕接受這一個新的值。(介面中定義的常量的訪問方法)
二是final關鍵字使用的範圍。這個final關鍵字不僅可以用來修飾基本資料型別的常量,還可以用來修飾物件的引用或者方法。如陣列就是一 個物件引用。為此可以使用final關鍵字來定義一個常量的陣列。這就是Java語言中一個很大的特色。一旦一個數組物件被final關鍵字設定為常量數 組之後,它只能夠恆定的指向一個數組物件,無法將其改變指向另外一個物件,也無法更改陣列(有序陣列的插入方法可使用的二分查詢演算法)中的值。
三是需要注意常量的命名規則。不同的語言,在定義變數或者常量的時候,都有自己一套編碼規則。這主要是為了提高程式碼的共享程度與提高程式碼的易讀 性。在Java語言中,定義常量的時候,也有自己的一套規則。如在給常量取名的時候,一般都用大寫字元。在Java語言中,大小寫字元是敏感的。之所以採 用大寫字元,主要是跟變數進行區分。雖然說給常量取名時採用小寫字元,也不會有語法上的錯誤。但是,為了在編寫程式碼時能夠一目瞭然的判斷變數與常量,最好 還是能夠將常量設定為大寫字元。另外,在常量中,往往通過下劃線來分隔不同的字元。而不想物件名或者類名那樣,通過首字元大寫的方式來進行分隔。這些規則 雖然不是強制性的規則,但是為了提高程式碼友好性,方便開發團隊中的其他成員閱讀,這些規則還是需要遵守的。沒有規矩,不成方圓。
總之,Java開發人員需要注意,被定義為final的常量需要採用大寫字母命名,並且中間最好使用下劃線作為分隔符來進行連線多個單詞。在定義final的資料不論是常量、物件引用還是陣列,在主函式中都不可以改變。否則的話,會被編輯器拒絕並提示錯誤資訊。
二、Final關鍵字與static關鍵字同時使用。
由於Javal是面向物件的語言,所以在定義常量的時候還有與其它程式語言不同的地方。如一段程式程式碼從編輯到最後執行,即使需要經過兩個過程,分別為程式碼的裝載與物件的建立。不同的過程對於常量的影響是不同的。現在假設有如下的程式碼:
Private static Random rd1=new Random(); //例項化一個隨機數生成物件。
Private final int int1=rd1.nestInt(10); //生成隨機數並賦值給常量int1
Private static final int int2=rd1.nestInt(10); //生成隨機數並賦值給常量int2
這上面的語句的大致含義是,通過Java語言提供的隨機數類物件,生成隨機數。並把生成的隨機數賦值給常量int1與int2。細心的讀者會發 現,雖然同樣是賦值語句,但是以上兩個語句中有一個細小的差別,即在第二條語句中多了一個關鍵字static。關於關鍵字的用途,筆者在以前的文章中也有 談到過。這個是一個靜態的概念。即當利用這個關鍵字來修飾一個變數的時候,在建立物件之前就會為這個變數在記憶體中建立一個儲存空間。以後建立對物件如果需 要用到這個靜態變數,那麼就會共享這一個變數的儲存空間。也就是說,在建立物件的時候,如果用到這個變數,那麼系統不會為其再分配一個儲存空間,而只是將 這個記憶體儲存空間的地址賦值給他。如此做的好處就是可以讓多個物件採用相同的初始變數。當需要改變多個物件中變數值的時候,只需要改變一次即可。從這個特 性上來說,其跟常量的作用比較類似。不過其並不能夠取代常量的作用。
在Java語言中,主要是利用final關鍵字(在Java類中靈活使用Static關鍵字)來定義常量。當常量被設定後,一般情況下就不允許再進行更改。如可以利用如下的形式來定義一個常量:final double PI=3.1315。在定義這個常量時,需要注意如下內容:
一是常量在定義的時候,就需要對常量進行初始化。也就是說,必須要在常量宣告時對其進行初始化。都跟區域性變數或者成員變數不同。當在常量定義的 時候初始化過後,在應用程式中就無法再次對這個常量進行賦值。如果強行賦值的話,資料庫會跳出錯誤資訊,並拒絕接受這一個新的值。(介面中定義的常量的訪問方法)
二是final關鍵字使用的範圍。這個final關鍵字不僅可以用來修飾基本資料型別的常量,還可以用來修飾物件的引用或者方法。如陣列就是一 個物件引用。為此可以使用final關鍵字來定義一個常量的陣列。這就是Java語言中一個很大的特色。一旦一個數組物件被final關鍵字設定為常量數 組之後,它只能夠恆定的指向一個數組物件,無法將其改變指向另外一個物件,也無法更改陣列(有序陣列的插入方法可使用的二分查詢演算法)中的值。
三是需要注意常量的命名規則。不同的語言,在定義變數或者常量的時候,都有自己一套編碼規則。這主要是為了提高程式碼的共享程度與提高程式碼的易讀 性。在Java語言中,定義常量的時候,也有自己的一套規則。如在給常量取名的時候,一般都用大寫字元。在Java語言中,大小寫字元是敏感的。之所以採 用大寫字元,主要是跟變數進行區分。雖然說給常量取名時採用小寫字元,也不會有語法上的錯誤。但是,為了在編寫程式碼時能夠一目瞭然的判斷變數與常量,最好 還是能夠將常量設定為大寫字元。另外,在常量中,往往通過下劃線來分隔不同的字元。而不想物件名或者類名那樣,通過首字元大寫的方式來進行分隔。這些規則 雖然不是強制性的規則,但是為了提高程式碼友好性,方便開發團隊中的其他成員閱讀,這些規則還是需要遵守的。沒有規矩,不成方圓。
總之,Java開發人員需要注意,被定義為final的常量需要採用大寫字母命名,並且中間最好使用下劃線作為分隔符來進行連線多個單詞。在定義final的資料不論是常量、物件引用還是陣列,在主函式中都不可以改變。否則的話,會被編輯器拒絕並提示錯誤資訊。
二、Final關鍵字與static關鍵字同時使用。
由於Javal是面向物件的語言,所以在定義常量的時候還有與其它程式語言不同的地方。如一段程式程式碼從編輯到最後執行,即使需要經過兩個過程,分別為程式碼的裝載與物件的建立。不同的過程對於常量的影響是不同的。現在假設有如下的程式碼:
Private static Random rd1=new Random(); //例項化一個隨機數生成物件。
Private final int int1=rd1.nestInt(10); //生成隨機數並賦值給常量int1
Private static final int int2=rd1.nestInt(10); //生成隨機數並賦值給常量int2
這上面的語句的大致含義是,通過Java語言提供的隨機數類物件,生成隨機數。並把生成的隨機數賦值給常量int1與int2。細心的讀者會發 現,雖然同樣是賦值語句,但是以上兩個語句中有一個細小的差別,即在第二條語句中多了一個關鍵字static。關於關鍵字的用途,筆者在以前的文章中也有 談到過。這個是一個靜態的概念。即當利用這個關鍵字來修飾一個變數的時候,在建立物件之前就會為這個變數在記憶體中建立一個儲存空間。以後建立對物件如果需 要用到這個靜態變數,那麼就會共享這一個變數的儲存空間。也就是說,在建立物件的時候,如果用到這個變數,那麼系統不會為其再分配一個儲存空間,而只是將 這個記憶體儲存空間的地址賦值給他。如此做的好處就是可以讓多個物件採用相同的初始變數。當需要改變多個物件中變數值的時候,只需要改變一次即可。從這個特 性上來說,其跟常量的作用比較類似。不過其並不能夠取代常量的作用。