java的final关键字——修饰变量
2017-10-29 20:03
375 查看
一、final修饰变量
final修饰变量不可变,这里是指引用不可变(Java中共提供两种数据类型,原始数据类型8种和引用类型),即它只指向初始时指向的那个对象,而不关心指向对象内容的变化。
final修饰的变量必须初始化。初始化根据变量类型而不同:
1、static变量。只能在定义,或者静态块中初始化。
2、普通实例变量。可以在定义,非静态块,构造函数中初始化。
3、局部变量。只能在定义时初始化。
注:static变量无法再非静态块和构造函数中初始化,因为静态变量在二者之前加载。同理,实例变量也无法在静态块中初始化,因为静态块加载时实例变量还没有定义。
===========================================2016/6/15更新================================================================
final数据另一种分类方法:
1.一个永不改变的编译时常量,还有static时命名全部大写:public static final int VALUE_ONE = 99;
2.一个在运行时初始化的值,而你不希望它被改变。private int i = (Random)random.nextInt(20);数值在运行时内被初始化时才会显现,编译时不知道。
版权声明:本文为博主原创文章,未经博主允许不得转载。
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);数值在运行时内被初始化时才会显现,编译时不知道。
版权声明:本文为博主原创文章,未经博主允许不得转载。
相关文章推荐
- 【Java面试题】2 Java中使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?超详细解析
- java的final关键字——修饰变量
- java的final关键字——修饰变量
- (java) final关键字- 修饰变量时
- java中使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
- java中使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
- 【java】对被final修饰的变量进行赋值的几种方法
- 面试题:使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
- 面试题6:使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变
- final关键字可以用来修饰类、方法、变量、参数,不能修饰抽象类和接口
- 使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
- final关键字可以用来修饰类、方法、变量、参数,不能修饰抽象类和接口
- JAVA中final关键字的使用,含义,final变量和final方法deng
- 浅谈java中String类的不可变性(immutability)和final关键字修饰
- 使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
- Java关键字volatile修饰变量
- java的final关键字——修饰方法
- 使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
- java中,final 修饰的String 变量与未修饰的String变量的区别
- [JAVA小记]final修饰的变量是否能够通过反射更改