static final域和final域的区别
博客专区 > 恒者 的博客 > 博客详情
static final域和final域的区别
恒者 发表于4年前
static final域和final域的区别
  • 发表于 4年前
  • 阅读 31
  • 收藏 0
  • 点赞 0
  • 评论 0
package staticfinaldemo;
import java.util.Random;
public class StaticFinalDemo {
    private static Random random = new Random(20);
    private static final int i1 = random.nextInt(10);
    private final int i2 = random.nextInt(10);
    private String id;
    public StaticFinalDemo(String id){
        this.id = id;
    }
    public String toString(){
        return id + ": i1 = " + i1 + " i2 = " + i2;
    }
    public static void main(String[] args){
        System.out.println("创建第一个StaticFinalDemo:");
        StaticFinalDemo staticFinalDemo = new StaticFinalDemo("no1");
        System.out.println(staticFinalDemo);
        System.out.println("创建第二个StaticFinalDemo:");
        StaticFinalDemo staticFinalDemo2 = new StaticFinalDemo("no2");
        System.out.println(staticFinalDemo);
        System.out.println(staticFinalDemo2);
    }
}

运行结果:

创建第一个StaticFinalDemo:
no1: i1 = 3 i2 = 6
创建第二个StaticFinalDemo:
no1: i1 = 3 i2 = 6
no2: i1 = 3 i2 = 1

由此可知:

定义为final,说明它是一个常量;

定义为static,说明它是一个属于类的常量(使用final修饰),为该类所有对象共享,且在类装载时初始化,而不是每次创建新对象时都初始化。

i1和i2是运行时常量,因为是运行产生的随机数来初始化它们的。

而编译时常量一般是基本数据类型,且常量定义时要赋初值。



共有 人打赏支持
粉丝 11
博文 25
码字总数 38957
×
恒者
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: