??????????У?д??????????????????????????????????????B????????????????i??????????????дfinal??????????дfinal????????????“???”??????????????????B?????????final????????????????

????дfinal????????????????????????????????????????????????final???????????????????????????????????????????????????????B“????”????????obj????????obj??????й??????????????i??д???????????????????????????2?????д???????i????

??????final????????????

??????final???????????????£?

?????? ?????????У????ζ?????????????ζ???????????final??JMM???????????????????????????????????????????????????????????????final????????????????LoadLoad?????

???????ζ?????????????ζ???????????final???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????alpha????????????????????????????????????????

????reader()??????????????????

????1?????ζ????????obj??

????2?????ζ????????obj????????????j??

????3?????ζ????????obj???????final??i??

???????????????д???A??з????κ?????????????????????????????????????У????????????????????

??????????У?????????????????????????????????????????????????????????????б?д???Aд??????????????????????????final???????????????????final??????“???”???????????????????final???????A????????????????????????????????

??????final???????????????????????????????final?????????????????????final??????????á??????????????У?????????ò??null?????????????final??????????A????????????

???????final????????????

?????????????????final????????????????????????????????final?????????????????????Ч????

?????????????????

public class FinalReferenceExample {
final int[] intArray;                     //final??????????
static FinalReferenceExample obj;

public FinalReferenceExample () {        //??????
    intArray = new int[1];              //1
    intArray[0] = 1;                   //2
}

public static void writerOne () {          //д???A???
    obj = new FinalReferenceExample ();  //3
}

public static void writerTwo () {          //д???B???
    obj.intArray[0] = 2;                 //4
}

public static void reader () {              //?????C???
    if (obj != null) {                    //5
        int temp1 = obj.intArray[0];       //6
    }
}
}