java final static 和final区别

两盒软妹~` 提交于 2020-03-17 00:26:09

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,而且在载入时初始化,而非每创建一个对象时初始化。

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!