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中使用,表示退出当前循环或者跳出当前逻辑判断的逻辑

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