變數和修飾子

變數 Variable

程式中建立了變數,記憶體就會產生指定的空間配置變數的值。Java命名變數必須是由英文字母、數字和底線組成。要注意必須由字母起頭,中間不要有空格和符號。 隨著程式的執行,變數儲存的資料量若是超出JVM空間時會出現 OutOfMemoryError 的執行階段錯誤使得程式中斷,但不致使電腦當機,仍然可以執行其它指令。 在宣告變數後,若未指定變數值之前就使用它,會發生錯誤。例如若宣告1個變數沒有指定值就想要使用,Eclipse會提示會出現編譯階段錯誤。有時候則是在程式執行過程中,預期要產生值卻因為種種因素而未產生的情況就是執行階段錯誤



使用某些語言,變數的名字同時告訴了這個變數帶有甚麼種類的值。例如FORTRAN的程式裏,變數的首個字母顯示了它是整數還是浮點數。變數名字首個字元是$的話,在BASIC的程式裏表示其值是字串。Perl透過字首如$,@,%和&來分辨哪是純量、陣列、雜湊或副程式。


常數 Constants

在使用變數的時候,有時會希望這個變數值為固定的情況。在宣告變數名稱的同時加上 final 修飾子,所有引用這個變數的地方都不可以改變它的值。 使用final來限定的變數,目的通常就是不希望其它的程式碼來變動它的值,例如圓周率PI的指定。

public class CH002 {
 
 public static void main(String agrs[]){
  
  final float pi;

  pi=3.14f;

  pi=3.141592653589793f;

  System.out.println(pi * 16);
  
  }
 
}
這一段程式碼中的pi變數使用final來限定,所以它在指定為3.14之後,就不可以再指定值給它,若嘗試再次指定就會發生編譯階段錯誤。 使用final來限定的變數,目的通常就是不希望其它的程式碼來變動它的值。


變數有效範圍

變數是一種在程式執行過程中暫時存放資料的記憶空間,對應的變數名稱就是指向該空間的識別代號。如果是建立在大括號或小括號區塊內的變數,有效範圍都在括號裡面,離開這個有效範圍就不能夠使用這個變數。這些僅存活在函式內部的變數,就稱為區域變數(local variable)。而有時會希望這個變數值在程式的所有方法中都可以被參考到。因此我們會設計全域變數。
下列程式碼中: 變數pi被放在第1個大括號public class Main{ }下,所以在這個括號中的所有方法都可以參考。而在main{ }, dosomeThing{ }, getSomeThing{ }方法中的變數都只在本身的括號中參考。其他方法中的變數,都無法相互參考。

public class CH002 {

 final static float pi = 3.14f;

 public static void main(String agrs[]) {

  int n = 16;

  System.out.println(pi);

 }

}



命名規則

過去的程式在撰寫時,變數名稱的長度會有所限制。雖然現在已無這種困擾,但還是鼓勵用清楚的名稱來表明變數作用。通常變數會以小寫字母,常數則會用大寫字母。一般直譯語言的程式碼常被稱為「腳本script」,常看到腳本中的變數都用簡單的英文字母命名,理論上打字較快也能增加程式讀取的速度,但容易混淆。除了作者之外,維護上有相當大的困難,建議在初學階段先利用有意義的英文單字做為命名依據。

該空格沒空格、分號冒號分不清、命名時用符號或關鍵字,這些sytax error是編譯階段錯誤。
說好了只有10個位置,卻去要第11個以上的東西。這種index out bond則是執行階段錯誤。
建立了變數名稱卻沒給值,執行的時候出現null point 也是執行階段錯誤。

CH002 請設定1個全域變數和1個區域變數,找出它們的範圍。
下一步 運算式運算子

沒有留言:

張貼留言