java中的final修饰词以及用法

final修饰词:final可以修饰变量、方法和类
1、final修饰的变量为常量(变量名要全大写),一旦赋值,其值将不能改变
1.1如果修饰的事基本类型变量,其值不能改变;
1.2如果修饰的是对象类型变量,指向对象的地址不能改变——也就是说一旦指向一个对象,就不能指向其他对象,但仍然可以改变这个对象的属性
1.3final修饰实例变量,可以通过初始化赋值或者构造器赋值(确保每个构造器都对其赋值),但只能选择一种方式赋值
2、final修饰的方法不能被子类覆盖
3、final修饰的类(密封类或者太监类),不能被继承
public class TestFinal
{
public static void main(String args[]){
//1、final修饰局部变量:基本类型变量
final int N; //定义常量,常量名要全大写
N = 100; //为常量第一次赋值
//N++; //为常量第二次赋值,错误
System.out.println(N);
System.out.println(“===================”);
//2、final修饰局部变量:对象类型
final Test TEST; //定义字符串常量
TEST = new Test(); //为常量第一次赋值
TEST.value = 10; //为对象的属性第一次赋值
TEST.value = 100; //为对象的属性第二次赋值
//TEST = new Test(); //为常量第二次赋值,错误
System.out.println(TEST.value);
System.out.println(“===================”);
//3、final属性初始化测试
FinalInit fi = new FinalInit();
System.out.println(fi.N+”:”+fi.M);
}
}
//2、定义一个类,用于对象类型测试
class Test
{
public int value;
}
//3、final属性的初始化
class FinalInit
{
final int N;
final int M = 100; //通过初始化为final属性赋值
//这样每次实例化对象时都会生成一个值相同且不能改变的内存空间,浪费了内存,一般添加static修饰符,使其变为类常量
//final static int M = 100;
//通过构造器为final属性赋值,每个构造器都要对为初始化的final属性赋值
public FinalInit(){
N = 200;
//M = 200; //final属性只能赋值一次
}
public FinalInit(int value){
this.N = value;
}
}

© 2014 – 2016, 李德涛博客. 版权所有.

发表评论

电子邮件地址不会被公开。 必填项已用*标注