JAVA中的 final

在Java里,final关键字最终的、不可更改的。    作“不可更改的”来解释更合适,即由final修饰的东西是“不可更改的”。final可以修饰变量、成员方法和类,还可以修饰方法的参数,但参数归根结底还是变量

1.final可以修饰成员变量、局部变量 

:变量用前要初始化,值不可更改,不能再次赋值(对于对象的引用,请引用相当于地址,因此赋给final变量的是地址值,地址值不可变,但其内容可变。详解如下 :

(1).final修饰的变量的值不能更改,即不能再次赋值,即使赋的新值与旧值一样也不可以。

如:

      final int i = 1; //定义int型变量i,并赋初值为1

      //i = 2; //wrong

      //i = 1; //wrong

注释掉的这两行都不可以,都会出现“The final local variable i can not be assigned.It must be blank and not using a compound assignment.”的错误。

(2).final修饰的成员变量和局部变量需要在使用前赋值。

    1).对成员变量而言,可以在定义时直接赋初值;

    2).也可以先定义不赋初值,再在构造方法中对其赋值。

   3).如果静态成员变量被修饰为final,那么该变量可看成是全局变量,即在类的整个加载期间,其值都不可变。

          如:

          static final String citizenship = "Chinese";

          citizenship既是static又是final的,static说明它是属于整个类的,类加载时就分配内存了(参见笔记9),final说明其值不可变,即,位置固定内容也固定。

(3).把成员变量和局部变量从变量的类型上来分,

    1).当变量为基本数据类型时,变量的值不可更改,如上面的变量i;

    2).当变量为引用类型时,变量本身的值不可更改,即该变量不能指向其他的对象或数组;

        但该变量指向的对象或数组本身的内容是可以改变的

总结:final修饰成员变量、局部变量:用前要进行赋值(早:声明时、晚:通过构造函数),运行过程中不可更改,否则报错

2.final可以修饰成员方法

 final修饰的成员方法不能被子类重写

3.final可以修饰成员方法的参数

由final修饰的成员方法的参数也是不能更改的,其实参数就是变量

4.final可以修饰类

由final修饰的类不能被子类继承,其成员方法也默认为final的,但成员变量是可以改变的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值