java final static 和final区别

Posted newlangwen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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,而且在载入时初始化,而非每创建一个对象时初始化。

 

以上是关于java final static 和final区别的主要内容,如果未能解决你的问题,请参考以下文章

Java中final与 static final 修饰的常量的区别

Java_基础java中static与final关键字的区别

java里的static/final含义

java基础01 访问控制,staticfinal和static final

java学习笔记之面向对象static,final关键字

Java从入门到放弃——05.修饰符static,final,权限修饰符