static為什么能和final一起來使用?


二者表示的意義不同

static修飾的對象靜態的,可以通過類名或者類對象來對其進行訪問和修改

final修飾的對象表示常量,只能夠被賦值一次

如:static final int a=1; //a為常量

static int b=2; //可以多次被賦值

再如:當在類中創建一個類的對象時,會將該類的成員方法和變量都會在內存copy一份,如果創建對個對象明顯會比較占用內存(前提是對象沒有獨享這些成員的必要);

如果這是在類中定義了一個static變量,那么這個變量在內存中只能有一份拷貝,創建的對象可以共享該內存中的值(互相影響,互相改變),而如果是想這份共享內存中的值不可改變,可加final來進行修飾

static int b=1; //一份拷貝

final int c=2; //如果有多個實例,每個實例都會分別存儲final修飾的變量,且隨着程序的運行,內存會不斷地分配與釋放(如銷毀對象時)

final static int d=3;//只有一份拷貝,多個實例共享,且屬性為只讀,會一直占用內存,直到程序的終止

對於一些常量或者字符串等等,一般建議寫成static final類型(節省空間)

但須注意一點:final,static不能喝abstract同時來修飾變量和方法

如:public abstract int area(); //對的

public static abstratc int area(); //錯的

 


免責聲明!

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



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