很多时候会容易把static和final关键字混淆,static作用于成员变量用来表示只保存一份副本,而final的作用是用来保证变量不可变。看下面这个例子

final和static的区别_System

每次打印的两个j值都是一样的,而i的值却是不同的。从这里就可以知道final和static变量的区别了。

public class Test {

public static void main(String[] args) {
MyClass myClass1 = new MyClass();
MyClass myClass2 = new MyClass();
System.out.println(myClass1.i);
System.out.println(myClass2.i);
System.out.println(myClass1.j);
System.out.println(myClass2.j);
}

}

class MyClass {
public final double i = Math.random();
public static double j = Math.random();
}