1. 程式人生 > 遊戲攻略 >《艾爾登法環》愛因斯坦捏臉分享

《艾爾登法環》愛因斯坦捏臉分享

1.final修飾類

不能被繼承 : String System StringBuffer

2. final 修飾方法

不可以被重寫: Object 的 getClass()

3. final 修飾變數

常量,無法被改變 必須要在物件建立之前 或者 物件建立時候 賦值

  • final 修飾屬性:可以考慮的賦值位置

    • 顯式初始化

    • 程式碼塊中初始化

    • 構造器中初始化

 

 1 import java.util.Random;
 2 
 3 class Value{
 4     int i;
 5     public Value(int i){
 6         this
.i = i; 7 } 8 } 9 public class FinalData { 10 private static Random rand = new Random(47); 11 private String id; 12 public FinalData(String id){ 13 this.id = id; 14 } 15 private final int valueOne = 9;//編譯期就初始化了 編譯器常量 16 //? 17 private static final int VALUE_TWO = 99;//
static final 18 public static final int VALUE_THREE = 39; 19 20 private final int i4 = rand.nextInt(20);// 第一次賦值的時候就已經 給常量賦值 一旦賦值 他們的值不能被改變 永遠都是這樣的 21 static final int INT_5 = rand.nextInt(20);//static 注意 是在類載入的時候 就被初始化 無論建立多少物件都無法被改變 22 23 private Value v1 = new Value(11); 24 private
final Value v2 = new Value(22); 25 private static final Value VAL_3 = new Value(33); 26 27 private final int[] a = {1,2,3,4,5,6}; 28 public String toString(){ 29 return id + ":" + "i4 = " + i4 + ", INT_5 = " + INT_5; 30 } 31 32 public static void main(String[] args) { 33 FinalData fd1 = new FinalData("fd1"); 34 // fd1.valueOne++; //報錯 final資料 不能被改變 35 fd1.v2.i++;//v2 中的 屬性i值內容被改變了 是可以的 不是修改的 final Value 這個常量物件 所以可以 36 fd1.v1 = new Value(9);//v1 不是final 可以被改變 37 // fd1.v2 = new Value(1);//報錯 final物件 不能被改變 38 39 40 for (int i = 0; i < fd1.a.length; i++) { fd1.a[i]++; }//沒有報錯 修改的是 final陣列物件的內部值 41 // fd1.a = new int[3];//報錯 修改了 final 陣列物件 42 43 System.out.println(fd1);//物件 44 45 //建立的新的物件 46 FinalData fd2 = new FinalData("fd2"); 47 48 49 System.out.println(fd1); 50 System.out.println("new Object"); 51 System.out.println(fd2); 52 } 53 } 54 /* 55 fd1:i4 = 15, INT_5 = 18 56 fd1:i4 = 15, INT_5 = 18 57 new Object 58 fd2:i4 = 13, INT_5 = 18 59 */