final變數和普通變數的區別

2021-09-26 02:29:40 字數 681 閱讀 7954

public class test{

public static void main(string args){

string a = "handao";

final string b = "han";

string c = "han";

string d = b+"dao";

string e = c+"dao";

system.out.println(a==d)  //true

system.out.println(a==e) //false

這裡面就是final變數和普通變數的區別了

當final變數時基本資料型別以及string型別時,如果在編譯期間能知道他的確切值

則編譯器會把它當作編譯器常量使用

也即是說,在用到該final變數的地方,就相當於直接訪問的這個常量,不需要在執行時確定

因此上面的**中

由於變數b被final修飾,因此會被當做編譯器常量

所以在使用到b的地方會直接將變數b體會為他的值

而對於變數d的訪問卻需要在執行時通過鏈結進行

不過注意:只有在編譯期間就能確切知道final變數值的情況下,編譯器才會優化

屬性和普通變數區別

1 資料安全 因為a是個公有變數,在類的外部可以任意更改,為了防止因使用者任意更改,可用屬性get set來限制 b的的唯讀 只寫或控制 b的最大或最小 引用一位老兄的簡答 其實自定義變數已經預設實現了屬性,只是簡單的讀寫而已,我們定義的屬性要在讀寫的基礎上加上更多限制,以後你學的多了就會發現,很多...

普通變數,static變數

普通變數,static變數雖然都是變數,但是他們有很大的區別,下面從儲存區域,初始化值,作用域,生命週期來辨析他們 在同乙個檔案下 測試使用,無意義 void add int a,int b intmain 結果 sum 6356940 tmp的初始化值 53 sum 1944111648通過結果可...

static變數與普通變數的異同

1 static區域性變數與普通區域性變數的異同 相同點 都是區域性變數,在函式內部定義,僅能被該模組內部的語句所訪問。不同點 1 記憶體分配與釋放 static修飾的區域性變數在記憶體中存放在靜態儲存區,static修飾的區域性變數只有在整個程式結束的時候才會自動釋放。若下次呼叫該區域性變數所在的...