文档章节

static final域和final域的区别

 恒者
发布于 2013/12/30 19:02
字数 243
阅读 39
收藏 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是运行时常量,因为是运行产生的随机数来初始化它们的。

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



© 著作权归作者所有

共有 人打赏支持
粉丝 10
博文 25
码字总数 38957
作品 0
武汉
私信 提问
Java中final与static的使用

Final关键字 根据使用环境不同,final的含义会有细微的区别,但通常是指无法改变的内容。final关键字可以修饰变量、方法和类。 Final变量 final数据是用来向编译器告知变量是恒定不变的。对使...

徐涛
2013/06/26
0
0
深入理解 Java final 变量的内存模型

(点击上方公众号,可快速关注) 来源:任春晓 对于 final 域,编译器和处理器要遵守两个重排序规则: 在构造函数内对一个 final 域的写,与随后把这个构造对象的引用赋值给一个变量,这两个...

ImportNew
11/09
0
0
static和final的区别

1.final定义的变量可以看做一个常量,不能被改变;final定义的方法不能被覆盖;final定义的类不能被继承。final static 就是再加上static的特性就可以了 2.static 是在内存中分配一块区域,供...

Grovvy
2012/04/15
0
0
《JAVA编程思想》学习笔记——第七章 复用类

复用类的主要方式有两种:组合,继承 组合 例: class A {} class B {A a;} 继承 继承是所有OOP语言和Java语言不可缺少的组成部分。当创建一个类时,总是在继承,因此,除非已明确指出要从其...

lixiaocheng18
2017/02/06
0
0
java的接口、类、属性、方法各有哪些修饰符

参考博客:http://blog.csdn.net/cao_tao199612/article/details/7458245 1、 接口的修饰符只有:public 2、 类的修饰符分为:可访问控制符和非访问控制符两种。 可访问控制符是:公共类修饰符...

yong230
2014/08/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Docker 基础及安装

Docker 是一个开源工具,它可以让创建和管理 Linux 容器变得简单。容器就像是轻量级的虚拟机,并且可以以毫秒级的速度来启动或停止。Docker 帮助系统管理员和程序员在容器中开发应用程序,并...

PeakFang-BOK
17分钟前
0
0
Vue.js 内置指令

Vue.js 的指令是带有特殊前缀 “v-“ 的 HTML 特性。它绑定一个表达式,并将一些特性应用到 DOM 上。 一、基本指令 1.1 v-cloak v-cloak 不需要表达式,它会在 Vue 实例结束编译时从绑定的 ...

Mr_ET
22分钟前
1
0
怎么样在谷歌找文章

使用这些前缀:(不懂英文经常在谷歌搜出些产品词——明明我要文章——,其实加些前缀就出来了 ,如tips amazon tool,step amazon tool) top 10 ... 10 tips to ... what is ... how to ... ...

阿锋zxf
26分钟前
0
0
缓存与数据库的双写一致性问题

数据库与缓存的双写一致性问题 cache aside pattern 数据库与缓存的双写一致性 为什么是先删除缓存再更新数据库,而不是反过来 并发读写下的一致性问题 总结: 读请求和写请求串行化,串到一个...

grace_233
43分钟前
1
0
详解java并发包源码之AQS独占方法源码分析

AQS 的实现原理 学完用 AQS 自定义一个锁以后,我们可以来看一下刚刚使用过的方法的实现。 分析源码的时候会省略一些不重要的代码。 AQS 的实现是基于一个 FIFO 队列的,每一个等待的线程被封...

小刀爱编程
47分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部