final

final修饰变量

final修饰变量时,一旦变量被赋了初始值,则该变量的值不能再改变。

1.final修饰类变量

类变量是随类初始化而初始化的,虚拟机加载类时,会为类变量分配内存空间,并分配默认值(0,‘\u0000’,false  ,null)。这里的默认值是系统默认分配的,并没有真正赋初始值,除非开发者没有指定初始值。

对类变量赋初始值,可以在静态代码块中赋值,或者在定义类变量的时候赋值,但不能同时在两个地方赋值。以下代码错误,类变量被赋值两次,编译出错:

public class People{

static final int age=1;

static{

     age=2;

        }

}

2.final修饰成员变量

final修饰成员变量,可以在声明该成员变量时、初始代码块中、构造方法中赋值,但是不能同时在两个或三个中赋值。

虚拟机不会为final修饰的成员变量初始化,需要开发者显示地去赋值。以下代码报错,系统试图访问未初始化的final成员变量:

public class People{

final int age;

static{

       System.out.println(age);

       age=1;

        }

}

3.final修饰局部变量

final不会为局部变量赋初始值,必须由开发者显示指定初始值。

final修饰方法的形参时,不能在方法体内赋值,因为调用方法时,系统会根据传入的实参来赋值,以下程序报错:

public class People{

public void show( final int age){

       age=1;

        }

}

4.final修饰基本类型变量和引用类型变量

final修饰基本类型变量时,不能重新赋值,但修饰引用变量时,引用变量不能改变,但引用变量指向的对象可以改变。

5.final方法

final方法不能被子类重写

6.final类

final类不能被继承


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值