您掌握了final关键字吗?

Java中,final关键字可以修饰变量,方法和类。它们表达的意义如下:

1:修饰变量:该变量赋值之后不可再修改或重新赋值,这种变量可以当成常量使用

2:修饰方法:方法不可被重写

3:修饰类:类不可被继承

本篇文章老谭专门探讨一下第一种情况。

1,final变量的赋值:

public class FinalDemo {
         final int NUM;
         void m1() {
                   final int NUM1;
         }
}

       该段代码编译不会成功。final修饰的类成员NUM是必须与声明时同时赋值的,即要使用如下语句:

final int NUM=20;

       final修饰方法中的局部变量则无需同时赋初始值,可以在使用之前赋值,但不可多次赋值。

但是可以使用初始化块为final修饰的类成员赋值,而且实例初始化块甚至可以出现在类成员声明之前:

public class FinalDemo {
        final int NUM;
       {
             NUM=20;
        }
         void m1() {
             final int NUM1;
         }
}

   类似的,如果finalstatic同时使用的话,则应该使用静态初始化块为该成员赋值。

 

2,  final修饰引用类型数据:

假设有以下两个类:

pubic class User{
         int num;
}
public class FinalDemo {
         final User user=new User();
         public static void main(String[] args) {
                   FinalDemo demo=new FinalDemo();
                   demo.user=new User();
         }
}

      编译时demo.user=new User();这句代码会出现编译错误,因为userfinal修饰的,不可重新赋值。但是以下代码能够成功编译:

public class FinalDemo {

final User user=new User();
        public static void main(String[] args) {
                   FinalDemo demo=new FinalDemo();
                   demo.user.num=30;
     }
}

 

 

final变量中的非final属性是可以重新赋值的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值