java final成员 默认值_2020-09-11 Java Final关键字(为下一篇内部类做准备)

四种用法:

1.可以用来修饰一个类

public final class 类名称{

//方法体...

}

含义:这个类不能有任何子类

注意:一个final类,其中所有成员方法都不能进行覆盖重写(没儿子)

2.可以用来修饰一个方法

修饰符 final 返回值类型 方法名称(参数列表){

//方法体...

}

注意:当final修饰一个方法,此方法不能进行覆盖重写;所以对于类和方法来说,abstract和final不能同时使用,因为矛盾。

3.可以用来修饰一个局部变量

注意:当final修饰一个局部变量(只保证唯一一次赋值),那么这个局部变量就不能进行更改。

对于基本类型来说,不可变说的是变量中的数据不可改变

对于引用类型来说,不可变说的是变量中的地址值不可改变,但里面的内容可以改变。

7f3d2fab8d06

final1.png

4.可以用来修饰一个成员变量

注意:当final修饰一个成员变量,那么这个成员变量也不能进行更改。

与局部变量区别:

1、由于成员变量有默认值,所以用了final后必须手动赋值(报提示),不给默认值了;

2、当final修饰一个成员变量,要么直接赋值,要么通过构造方法赋值(二者选其一)。必须保证所有重载的构造方法对其都有赋值。

成员变量和局部变量的区别

1.从语法形式上,看成员变量是属于类的,而局部变量是在方法中定义的变量或是方法的参数;成员变量可以被public,private,static等修饰符所修饰,而局部变量不能被访问控制修饰符及static所修饰;但是,成员变量和局部变量都能被final所修饰;

2.从变量在内存中的存储方式来看,成员变量是对象的一部分,而对象存在于堆内存,局部变量存在于栈内存

3.从变量在内存中的生存时间上看,成员变量是对象的一部分,它随着对象的创建而存在,而局部变量随着方法的调用而自动消失。

4.成员变量如果没有被赋初值,则会自动以类型的默认值而赋值(一种情况例外被final修饰但没有被static修饰的成员变量必须显示地赋值);而局部变量则不会自动赋值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值