JAVA基础之final

JAVA基础之final

例题show一下

------------------------------------考试分割线------------------------------------------

public class finalOriginalText(){
  private final int a;
  private String name;
  public finalOriginalText(){
    a=3;
    }
  public  finalOriginalText(String name){
    this.name=name;
    }
  }

问题1:这个语段可以编译通过吗?她有什么问题?

------------------------------ 考试结束分割线-----------------------------------------

答案当然是不能通过的啦~因为没有初始化变量a啊

final到底还可以用于修饰哪些呢?

final 除了可以修饰刚刚的变量之外,还可以用于修饰类和方法上

修饰方法:

如果final修饰了方法,那么这个方法就不可以被override,就是不能被重写

修饰类:

如果final修饰了类,那么这个类就不可以被继承。
其实你可以这样理解,如果一个东西被final修饰了,那么她就被"终结"了!~

问题二(承接问题一题目)

假设问题一的问题已经解决,我将"public final int a"改为"punlic static final int a"能否编译通过?如果不行,那么请说明她存在的问题。

莫慌莫慌 我们先分析一下这个语句
public 修饰符
static 表示静态变量
final 关键字
int 数据类型
a 类型名称

这个只是比问题一多加了一个static 静态变量标识符,表明a已经是静态变量了,在a还没有实例化的时候,它的值已经有了,所以在声明的时候,我们应该在初始化的时候给她赋值,然后在构造方法中把a=3注释掉就好啦

总结

对于不加static的final修饰语句,我们有两种方式给她赋值:
1:声明变量的时候直接赋值
2:如果在构造方法中赋值,无论有多少个构造方法,都要完成初始化工作
对于加static 和 final 的语句,我们就只有一种赋值方式:声明变量的时候直接赋值

看完之后有问题记得留言哦
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值