final变量
来源:互联网 发布:在线求导软件 编辑:程序博客网 时间:2024/05/21 14:49
final关键字可用于变量声明,一旦该变量被设定,就不可以再改变该变量的值。 通常final定义的变量为常量。如:
final double PI = 3.14;当在程序中使用PI这个常量时,它的值就是3.14,如在程序中再次对定义为final的常量赋值,编译器将不能接受;
final关键字定义的变量必须在声明时对其进行赋值操作。final除了可以修饰基本数据类型的常量,还可以修饰对象引用。由于数组也可以被用作一个对象引用,所以final可以修饰数组。一旦一个对象引用被修饰为final后,它只能恒定指向一个对象,无法将其改变为另一个对象。一个既是static又是final的字段只占据一段不能改变的存储空间。如下例:
import static java.lang.System.out;import java.util.Random;class Test{ int i = 0;}public class FinalData {static Random rand = new Random();private final int VALUE_1 = 9;//final定义的变量必须使用大写字母命名private static final int VALUE_2 = 10;//并且使用下划线进行连接;private final Test test = new Test();private Test test2 = new Test();private final int[] a = {1,2,3,4,5,6};private final int i4 = rand.nextInt(20);private static final int i5 = rand.nextInt(20);public String toString(){return i4 + "" + i5 + "";}public static void main(String[] args) {FinalData data = new FinalData();//data.test = new Test();//data.VALUE_2++;data.test2 = new Test();for(int i=0; i<data.a.length; i++){//a[i] = 9;}out.println(data); out.println("data2"); out.println(new FinalData()); out.println(data);}}一个被定义为final的对象只能指向唯一一个对象,不可以将它指向其他对象,但是一个对象本身的值确实可以改变的,那么为了使一个常量真正做到不可更改,可以将常量说明为static final. 如下例:
import static java.lang.System.out;import java.util.Random;public class FinalStaticData {private static Random rand = new Random();private final int a1 = rand.nextInt(10);private static final int a2 = rand.nextInt(10);public static void main(String[] args) {FinalStaticData fdata = new FinalStaticData();//实例化一个对象out.println("重新实例化对象调用a1的值:" + fdata.a1);out.println("重新实例化对象调用a2的值:" + fdata.a2);FinalStaticData fdata2 = new FinalStaticData();// 实例化新对象out.println("重新实例化对象调用a1的值:" + fdata2.a1);out.println("重新实例化对象调用a2的值:" + fdata2.a2);}}
重新实例化对象调用a1的值:9重新实例化对象调用a2的值:2重新实例化对象调用a1的值:1重新实例化对象调用a2的值:2
总结:
定义为final常量不是恒定不变的,将随机数赋予final的变量,可以做到每次运行程序时改变a1的值,但是a2被定义为static final形式,所以内存中为a2开辟了一个恒定的区域,当再次实例化一个FianlStaticData对象时,仍然指向a2这块内存区域,所以a2的值保持不变。
技巧:
在JAVA中定义全局常量,通常使用public static final修饰,这样的常量只能在定义时被赋值。
1 0
- final变量
- final变量
- final变量
- final关键字之final变量
- final修饰符---final变量
- Java final 类,final 方法,final变量
- final成员变量和final局部变量
- final成员变量和final局部变量
- final方法、final变量、final类、final对象—Java
- final 变量和普通变量
- static与final变量
- 再说final变量
- 再说final变量
- 再说final变量
- 再说final变量
- java中的final变量
- 再说final变量
- java谜题--final变量
- C++函数模板特化与类模板特化
- 网卡驱动4-做一个与外界交互的虚拟网卡3(调用真实网卡接收数据以及napi使用)
- OCP-1Z0-053-200题-64题-641
- Java线程中sleep()、wait()和notify()和notifyAll()、yield()、join()等方法的用法和区别
- 简介键盘上各种符号代表的意思
- final变量
- 上海清晖6月PMP认证考前培训,万名PMP见证!
- ripple骗局
- Spark:一个高效的分布式计算系统
- MFC显示图片/StretchDIBits失真/显示倒了
- C++/面试 - 四种类型转换(cast)的关键字 详解 及 代码
- TCP和UDP的主要区别
- truncate的用法(外键删除)
- ;; connection timed out; trying next origin ;; connection timed out; no servers could be reached