php final变量吗,java_Java中final变量使用总结,final关键字可用于变量声明,一 - phpStudy...

Java中final变量使用总结

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

{

//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修饰,这样的常量只能在定义时被赋值。相关阅读:

jQuery Mobile 和 Kendo UI 的比较

css控制字间距和对齐方式及其所用属性介绍

PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法

Linux系统个性化登录提示信息的方法

JS实现的Select三级下拉菜单代码

css中filter:alpha透明度使用小结兼容IE、火狐

块级元素和内联元素及可变元素汇总

MySQL命令行界面中出现字符错误提示的原因及解决方法

c#详解datetime使用示例

如何修改Mac屏保程序以张扬自我个性

2014年最火的Node.JS后端框架推荐

VC程序在Win32环境下动态链接库(DLL)编程原理

JavaScript数据结构与算法之链表

一致性哈希算法以及其PHP实现详细解析

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值