JAVA之static与final用法

1.final关键字

1.1.final关键字修饰变量

(1)类加载时执行顺序 static代码块>代码块>构造器

该关键字可以在定义时赋值,可以在静态代码块中赋值,可以在代码块中赋值,以及在构造器中赋值。

必须要有值

(2)如果是基本数据类型的数据,该变量一旦赋值,便相当于一个常量。

(3)如果是引用数据类型的变量,初始化后不能更改他的引用,但可以更改引用对象的值。

1.2.final关键字修饰方法

(1)表明该方法不能被子类重写,防止类修改他的含义

(2)与static比较:两者都不能重写但都可以被子类继承调用,不同在于static可以写一个同名方法隐藏父类的方法,而final不行 
与private比较:private无法被子类继承,可以在子类中写一个新的同名方法,而final修饰的可以被子类继承调用,但final不能被重写,不能被修改,也就不能写一个新的同名方法

1.3.final修饰类

(1)表明这个类不能被继承

(2)final类中的所有方法都会被隐式的指定为final方法

 

2.static关键字

2.1.static关键字修饰变量

(1)static关键字修饰的变量也叫类变量,整个类共享这一个静态变量,使用类名.变量访问。

(2)与非静态变量区别,静态变量在内存中只有一个,随类加载而加载,程序结束时销毁,非静态每个对象都有单独的一个,随着对象一起创建销毁

2.2.static关键字修饰方法

(1)静态方法是不在对象上执行的方法,不需要类的实例化,可以直接通过类调用。

(2)在类加载时分配内存空间(类中只有一个),在调用时执行,静态方法只能调用静态变量和静态方法,且不能被重写。

2.3.static关键字修饰代码块

静态代码块只在类加载时执行一次,静态代码块及非静态代码块的执行顺序

(1.首先加载父类的静态字段或者静态语句块 2.子类的静态字段或静态语句块 3.父类普通变量以及语句块 4.父类构造方法被加载 5.子类变量或者语句块被加载 6.子类构造方法被加载)

2.4.static关键字修饰内部类

(1)静态内部类的创建不依赖与外部类,创建普通内部类之前需要先创建外部类的对象( 外部类. 内部类 内部类对象 = 外部类对象.new 内部类(); ) ,而创建静态内部类之前不需要先创建外部类,可以直接创建静态内部类。( 外部类.内部类 对象=new 外部类.内部类(); )

(2)静态内部类可以调用外部类的静态变量和静态方法,但不能调用外部类的非静态变量和非静态方法。

欢迎关注公众号:

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老布丁~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值