final、static、this、continue與break關鍵字的使用

final關鍵字的含義

作用:
對於基本類型,final使數值恆定不變。對於對象引用,final使引用恆定不變。一旦引用被初始化指向一個對象,就無法再把它指向另一個對象,然而,對象其本身確實可以被修改的,這句話怎麼理解請看一個Demo。

public class Value {

    int i;
    public Value(int i) {
        this.i = i;
    }

import java.util.Random;

public class FinalData {
private static Random rand = new Random();
private String id;

public FinalData(String id) {
    this.id = id;
}
private final int valueOne = 9;
private static final int VALUE_TWO = 99;
public static final int VALUE_THREE = 39;
private final int i4 = rand.nextInt(20);
static final int INT_5 = rand.nextInt(20);
private Value v1 = new Value(11);
public final Value v2 = new Value(22);
private static final Value VAL_3 = new Value(33);
private final int[] a = {1, 2, 3, 4 , 5 , 6};
@Override
public String toString() {
return id + "+ "i4= " + i4 + ", INT_5 = " + INT_5;
    }
public static void main(String[] args) {
        FinalData fd1 = new FinalData("fd1");
        fd1.v2.i++;
        fd1.v1 = new Value(9);
        for (int i = 0; i < fd1.a.length; i++) {
            fd1.a[i]++;
        }
        System.out.println(fd1);
        System.out.println("Creating new FinalData");
        FinalData fd2 = new FinalData("fd2");
        System.out.println(fd1);
        System.out.println(fd2);
    }

}

輸出:

fd1:i4= 5, INT_5 = 15
Creating new FinalData
fd1:i4= 5, INT_5 = 15
fd2:i4= 7, INT_5 = 15

大家可以看到i4的值在變,爲什麼。因爲final修飾符的真正含義是引用指向的對象不變,但是對象本身的值在初始化的時候卻是可以改變的。因爲初始化對象採用的是隨機數,所以導致對象的值可以改變。這也就是爲什麼常量不僅是final 還是static 的,因爲static表示在裝載時已經被初始化,而且也只會被初始化一次,所以IINT_5的值是不變的

final指定的值必須在域定義處或者每個構造器中用表達式對final進行賦值。

class Peoppet {
    private int i;
    Peoppet(int ii) {
        i = ii;
    }
}

public class BlankFinal {
    private final int i = 0;
    private final int j;
    private Peoppet p;
    public  BlankFinal() {
        j = 1;
        p = new Peoppet(1);
}

public BlankFinal(int x) {
    j = x;
    p = new Peoppet(x);
}

public static void main(String[] args) {
    new BlankFinal();
    new BlankFinal(47);
}

}

如果不在這兩個步驟初始化就會報錯。

不要將final與private合用,因爲無任何意義,一般在方法內使用final處於設計或者效率的原因。
但是在JAVASE5以上就不需要使用final去提高方法的效率,那麼就剩處於將方法設計爲無法修改的目的。

final類是希望沒有任何子類,不希望被繼承。String類就是典型的這種類

static 靜態的
涉及的知識點
(1)靜態代碼塊(執行順序是第一位)
(2)靜態變量
(3)靜態方法(用類可以調出來)

靜態屬性是共享的,在靜態方法中是沒有this對象的

this 當前對象的引用

在JAVA中是依靠引用去判斷是否有些哪些方法,實際使用:

public class Freedom {

    private int i;
    private String mFood;
    private String mWater;

    public Freedom(int i, String mFood, String mWater) {
        super();
        this.i = i;
        this.mFood = mFood;
        this.mWater = mWater;
    }

    public Freedom(int i, String mFood) {
        this(i, mFood, null);
    }

}

運用重載有不同的構造方法,用this可以調用本類的構造方法。同樣可以用this也可以調用本類中的方法進行不同的封裝。

continue與break關鍵字的使用:

for(int i = 0 ; i < 5 ; i++) {
             System.out.println("for循環++" + i);
             continue;
         } 
for(int i = 0 ; i < 5 ; i++) {
             System.out.println("for循環++" + i);
             break;
         } 

當年在continue下面繼續輸入code,就會提示該code不可到達

1、continue只是該次循環continue後面的code不再執行,而break則是直接跳出當前循環
2、continue必須在一個循環中使用,for循環或者while循環之類使用,而break不僅可以在這種循環中使用也可以在switch以及if中使用,表示退出當前循環或者跳出當前邏輯判斷的邏輯

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章