final常量

final关键字可用于变量声明,一旦该变量被设定,就不可以再改变该变量的值。通常,由final定义的变量为变量。例如,在类中定义PI值,可以使用如下语句:

 final double PI=3.14;

当在程序中使用到PI这个变量时,它的值就是3.14,如果在程序中再次对定义为final的常量赋值,编译器将不会接受。

final关键字定义的变量必须在声明时对其进行赋值操作。final除了可以修饰基本数据类型的常量,还可以修饰对象引用。由于数组也可以被看作一个对象来引用,所以final可以修饰数组。一旦一个对象引用被修饰为final后,它只能恒定指向一个对象,无法将其改变指向另一个对象。一个既是static又是final的字段只占据一段不能改变的存储空间。为了深入了解final关键字,来看下面的实例:

在项目的com.lzw包中创建FinalData类,在该类中创建Test内部类,并定义各种类型的final变量。

package com.lzw;

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; //声明一个final、static常量

private final Test test=new Test();  //声明一个final引用

private Test test2=new Test(); //声明一个不是final的引用

private final int[]a={1,2,3,4,5,6}; //声明一个定义为final的数组

private final int i4=rand.nextInt(20);

public String toString(){

return i4+""+i5+"";

}

public static void main(String[]args){

FinalData data=new FinalData();

data.test=new Test();

//可以对指定为final的引用中的成员变量赋值

//但不能将定义为final的引用指向其他引用

data.value2++;

//不能改变定义为final的常量值

data.test2=new Test();  //可以将没有定义为final的引用指向其他引用

for(int i=0;i<data.a.length;i++){

a[i]=9;

//不能对定义为final的数组赋值

}
out.println(data);

out.println("data2");

out.println(new FinalData());

out.println(data);

     }

}

在本实例中,被定义为final的常量定义时需要使用大写字母命名,并且中间使用下划线进行连接,这是Java中的编码规则。同时,定义为final的数据无论是常量、对象引用还是数组,在主函数中都不可以改变。

转载于:https://my.oschina.net/wf1994/blog/686367

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值