java final static 和final区别

static 和非static 之间的差异,只有当值在运行期间初始化的前提下,这种差异才会揭示出来。因为编译期间的值被编译器认为是相

同的。

package thinking;

public class FinalData {

    // Can be compile-time constants
    final int i1 = 9;
    static final int I2 = 99;
    // Typical public constant:
    public static final int I3 = 39;
    // Cannot be compile-time constants:
    final int i4 = (int)(Math.random()*20);
    static final int i5 = (int)(Math.random()*20);
    
    
    public void print(String id) {
        System.out.println(
        id + ": " + "i4 = " + i4 +
        ", i5 = " + i5);
        }
    
    
    public static void main(String[] args) {
        FinalData fd1 = new FinalData();
        FinalData fd2 = new FinalData();
        fd1.print("fd1");
        fd2.print("fd2");
    }
}

注意对于fd1 和fd2 来说,i4 的值是唯一的,但i5 的值不会由于创建了另一个FinalData 对象而发生改

变。那是因为它的属性是static,而且在载入时初始化,而非每创建一个对象时初始化。

猜你喜欢

转载自www.cnblogs.com/newlangwen/p/9164099.html
今日推荐