Java杂谈5——关键字final与volatile】的更多相关文章

Final关键字 在Java语言中,随着语境的不同final关键字所代表的语义会有一些细微的差异.总的来说,final关键字表达的含义是“禁止修改”,这层有点类似于C++中的const关键字.之所以要采用final关键字,一般是会出于性能和设计层面的考虑.下文会具体讨论final关键字在不同语境中的具体用法. Final + 属性 用final关键字修饰的属性,对于Java编译器来说就是一个“常量”.其特点是:1.具体的值在编译期间就已经被确定:2.在运行时不能再被修改.基于以上两个特点,我们分…
一 . final 含义:adj.最后的,最终的; 决定性的; 不可更改的.在Java中是一个保留的关键字,可以声明成员变量.方法.类以及本地变量.一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误. 1)修饰成员变量.局部变量:在编写程序时,我们经常需要说明一个数据是不可变的,我们成为常量.在java中,用final关键字修饰的变量,只能进行一次赋值操作,并且在生存期内不可以改变它的值.更重要的是,final会告诉编译器,…
   1.关键字final      final修饰类:这个类就不能被继承      final修饰方法:不能被重写      final修饰属性:此属性就是一个常量,一旦初始化后,不可再被赋值.习惯上,常量用大写字符表示      此常量在哪里赋值:①此常量不能使用默认初始化 ②可以显式的赋值.代码块.构造器       注意:变量用static final修饰:全局常量    2.关键字static      static,静态的,可以用来属性.方法.*代码块(或初始化块).*内部类    …
一.基础概念 1.关键字final可以修饰类.函数.变量. 2.关键字final修饰的类不可以被继承. 3.关键字final修饰的方法不可以被覆盖. 4.关键字final修饰的变量是一个常量,只能被赋值一次. 程序中不变的数据都用final修饰,提供程序的阅读性. 被final修饰的变量名称规范:所有字母大写.若由多个单词组成,需要使用_进行分隔. 二.实例代码 class Fu { public final double PI = 3.14; //final修饰PI,只能被赋值一次. //PI…
final关键字简述 final关键字是在编写java程序中出现频率和很高的关键字,如果想要更好的编写java程序,那么掌握final关键字的运用是非常必要的.让我们先看一下final关键字可以修饰的地方有哪些 final关键字修饰在类上 final关键字修饰在方法上 final关键字修饰在成员变量上 final关键字修饰匿名内部类方法上 鉴于本人知识结构有限,若有错误忘不吝赐教,甚为感谢. final关键字修饰在类上 当final关键字修饰在类上时代表该类是不可被继承,我们非常熟悉的Strin…
相比synchronized,final和volatile也是经常使用的关键字,下面聊一聊这两个关键字的使用和实现 1.使用 final使用: 修饰类表示该类为终态类,无法被继承 修饰方法表示该方法无法重写,编译器可以内联编译 修饰对象表示该对象引用一旦初始化后,无法被修改 将参数传递到匿名内部类中,参数需要声明为final,其实外部类对与匿名内部类来说就是一个闭包,而java在匿名内部类中拷贝了一份,没有实现引用同步,所以要求参数不可变(参考:https://www.zhihu.com/que…
由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来了解一下与内存模型相关的概念和知识. 一.内存模型的相关概念 Java内存模型规定所有的变量都是存在主存当中,每个线程都有自己的工作内存.线程对变量的所有操作都必须在工作内存中进行,而不能直接对主存进行操作.并且每个线程不能访问其他线程的工作内存. 在java中,执行下面这个语句: int i=3; 执行线程必须先在自己的工作线程中对变量i所在的缓存行进行赋值操作,然后再写入主存当中.而不是直接将…
本文的主要内容如下   1.标识符合关键字 2.Java中的关键字 3.static关键 字 4.static方法 5.静态代码块 6.static修饰符综述 7.final关键字 8.final修饰符综述 9.抽象类abstract class 10.abstract综述 11.抽象类和接口的区别(j精讲) 1.标识符合关键字 标识符命名规则 (1)由字母.数字.下划线.$组成 ,不能以数字开头 (2)大小写敏感 (3)不得使用关键字和保留字 习惯 (1)标识符要符合语义信息. (2)包名所有…
前言 学习新知识固然重要,但是时常往回看看,温故知新是很必要的.回顾一下线程安全性和final关键字. 正文 从Java 5开始,final keyword一个特殊用法是在并发库中一个非常重要且经常被忽视的武器.实质上,可以使用final来确保在构造对象时,访问该对象的另一个线程不会看到处于部分构造状态的对象,否则可能会发生这种情况.这是因为当作为对象变量的一个属性时,final作为其定义的一部分具有以下重要特征: 当构造函数退出时,final keyword的值保证对访问构造对象的其他线程可见…
Java的volatile关键字在JDK源码中经常出现,但是对它的认识只是停留在共享变量上,今天来谈谈volatile关键字. volatile,从字面上说是易变的.不稳定的,事实上,也确实如此,这个关键字的作用就是告诉编译器,只要是被此关键字修饰的变量都是易变的.不稳定的.那为什么是易变的呢?因为volatile所修饰的变量是直接存在于主内存中的,线程对变量的操作也是直接反映在主内存中,所以说其是易变的. 一.Java内存模型 Java内存模型规定所有的变量都是存在主存当中(类似于前面说的物理…