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修飾的區域性變數只有在整個程式結束的時候才會自動釋放。若下次呼叫該區域性變數所在的...