(java) final关键字- 修饰变量时
2018-03-11 16:34
393 查看
final 关键字修饰的对象或数据一经产生是不可被修改的了。可以修饰变量,方法,方法中的参数,修饰类
修饰变量时
用final关键字修饰的变量,只能进行一次赋值操作,并且在生存期内不可以改变它的值。其中的只能进行一次赋值操作是发生在编译期间还是发生在运行时期间?如果是在编译期间就能确定的值(针对基本的数据类型),则编译期间就以常量的形式确定下来。
如果是由经对象之后确定的(请参阅之前相关的文章,类只有在主动使用的情况下才会触发相关的初始化操作。),则会在第一次运行时确定其值。看如下的示例package com.test;
import java.util.Random;
class A{
public static final int a=10/5;//这个是在编译期间期,a的值就是已经确定下来了的。等同于a=2.所以是不会触发类的初始化操作
public static final int b=new Random().nextInt(100);//对象的实例是在运行时生成的,在之前就会触发类相关的初始化操作
static{
System.out.println("A static block");
}
}
public class FinalTest {
public static void main(String[] args) {
System.out.println(A.a);
System.out.println("----------------------");
System.out.println(A.b);
}
}输出:2
----------------------
A static block
91示例2
修饰变量时
用final关键字修饰的变量,只能进行一次赋值操作,并且在生存期内不可以改变它的值。其中的只能进行一次赋值操作是发生在编译期间还是发生在运行时期间?如果是在编译期间就能确定的值(针对基本的数据类型),则编译期间就以常量的形式确定下来。
如果是由经对象之后确定的(请参阅之前相关的文章,类只有在主动使用的情况下才会触发相关的初始化操作。),则会在第一次运行时确定其值。看如下的示例package com.test;
import java.util.Random;
class A{
public static final int a=10/5;//这个是在编译期间期,a的值就是已经确定下来了的。等同于a=2.所以是不会触发类的初始化操作
public static final int b=new Random().nextInt(100);//对象的实例是在运行时生成的,在之前就会触发类相关的初始化操作
static{
System.out.println("A static block");
}
}
public class FinalTest {
public static void main(String[] args) {
System.out.println(A.a);
System.out.println("----------------------");
System.out.println(A.b);
}
}输出:2
----------------------
A static block
91示例2
相关文章推荐
- java中使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
- 【Java面试题】2 Java中使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?超详细解析
- java的final关键字——修饰变量
- java的final关键字——修饰变量
- java中使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
- java的final关键字——修饰变量
- 在JAVA中为什么本地变量传入内部类中要加final关键字
- Java之final修饰变量
- java中final可以修饰的变量
- final关键字可以用来修饰类、方法、变量、参数,不能修饰抽象类和接口
- java final修饰变量时的一种情况
- 2018/01/08JAVA 基础 / 接口与继承 / JAVA的修饰符FINAL详解:final修饰类、方法、基本变量、引用、常量
- Java关键知识点 - Java final关键字到底修饰了什么?
- 使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
- 用 sed 给 java 所有静态变量加 final 关键字
- Java中内部类中使用外面变量为什么final修饰?
- Final关键字修饰变量时,是引用变量的值不可变,还是对象的值不可变呢?
- JAVA局部变量加final修饰的好处
- Java关键字volatile修饰变量
- 使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?(个人理解)