您的位置:首页 > 编程语言 > Java开发

java的final关键字——修饰变量

2017-10-29 20:03 375 查看
一、final修饰变量

final修饰变量不可变,这里是指引用不可变(Java中共提供两种数据类型,原始数据类型8种和引用类型),即它只指向初始时指向的那个对象,而不关心指向对象内容的变化。

final修饰的变量必须初始化。初始化根据变量类型而不同:

1、static变量。只能在定义,或者静态块中初始化。

2、普通实例变量。可以在定义,非静态块,构造函数中初始化。

3、局部变量。只能在定义时初始化。

注:static变量无法再非静态块和构造函数中初始化,因为静态变量在二者之前加载。同理,实例变量也无法在静态块中初始化,因为静态块加载时实例变量还没有定义。

public static void main(String[] args) {

final int aInt = 10;//必须初始化
aInt = 1;//编译期间错误
System.out.println("aInt = "+aInt);


final StringBuffer s = new StringBuffer("Hello");

s.append(" World!");

System.out.println(s);//结果为Hello World!

final StringBuffer s1 = new StringBuffer(" Hello");

s1 = new StringBuffer("Hello World!"); //编译期间错误,不可以指向别的对象.

/*

* 不可变有两层含义:1 引用不可变 2 对象不可变

* 综上,final指的是引用不可变,只能指向初始时指向的那个对象,而不关心对象内容的变化.

* */


}


===========================================2016/6/15更新================================================================

final数据另一种分类方法:

1.一个永不改变的编译时常量,还有static时命名全部大写:public static final int VALUE_ONE = 99;

2.一个在运行时初始化的值,而你不希望它被改变。private int i = (Random)random.nextInt(20);数值在运行时内被初始化时才会显现,编译时不知道。



版权声明:本文为博主原创文章,未经博主允许不得转载。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐