欢迎光临散文网 会员登陆 & 注册

150天打卡day14__static和final

2021-04-22 18:20 作者:关阿姨的Java日记  | 我要投稿

上节回顾

  • package

  • import

  • 封装

本节重点

static

static英文含义静态的,所有的静态相关,都是用static关键字修饰的

  • static关键字可以修饰成员变量,称为静态变量

  • static关键字可以修饰方法,称为静态方法

  • static关键字可以修饰代码块,称为静态块

静态变量

  • 由static修饰

  • 属于类的,存在方法区中,只有一份

  • 可以通过类名直接打点调用

  • 所有对象共享的数据都统一声明为静态变量

    • 飞机大战里的图片,视频,音频

优点:静态变量不需要实例化,静态变量的值可以直接赋值,不需要参数传递

缺点:静态变量属于类,所以在类存在的时候就会加载到内存中,如果一直没有被引用的话,会加大

内存负担和程序运行负担,影响运行效率


静态方法

  • 由static修饰

  • 静态方法和非静态方法都存储在方法区中,只有调用的时候有区别,静态方法在调用的时候

    是直接用类名打点调用.非静态方法通过对象来调用

注意

  • 如果想频繁的使用一个方法,并且这个方法不需要某个对象数据时,就可以设置为静态方法

  • 静态方法中不允许有隐式的this关键字 ,this属于对象,不属于类,而静态属于类,不属于对象

  • 静态方法中不能调用非静态成员

静态方法只能访问静态的变量和调用静态的方法,静态的只能使用静态的,但是非静态的可以调

用静态方法和变量,也可以调用非静态的变量和方法

 

静态块

静态代码块(静态初始化块):JVM加载类(加载在运行之前)时执行,静态代码块只执行一次,

静态块常用来执行类属性的初始化。

例如:

 

思考:为啥需要静态初始化块?

静态初始化块主要用来初始化类变量。有时需要有些代码在项目启动时就执行,静态代码块是主动执行的。

类变量可以在构造函数中初始化为啥还要定义静态初始化块呢?

因为,类变量可以通过类名.类变量的形式调用,有的时候我们不想为了初始化类变量而创建对象,所以就有了静态初始化块。

静态初始化块可以在类加载的时候执行一次。避免了了初始化类变量而创建对象

final

final 最后,最终的

  • final关键字可以修饰成员变量和局部变量,

  • final关键字可以修饰方法。

  • final关键字可以修饰类。

final 修饰变量

通常由final定义的变量称之为是常量。例如:常用于对一些特定数值的声明

  • final关键字可用于声明变量,必须在声明时就对其进行赋值操作,一旦该变量被设定,就不可

    以改变

    • final关键字修饰一个基本类型的变量(包括局部变量和成员变量)时,该变量不能重

      新赋值,第一次的值为最终的

    • fianl关键字修饰一个引用类型变量时,该变量不能重新指向新的对象

 

final修饰方法

final修饰的方法不允许被重写

final修饰类

  • 如果希望一个类不允许任何类继承,而且也不允许其他人对这个类进行任何改动,可以将这

    个类设置为final类

  • 如果将这个类设定为final类,那么类中的所有方法都被隐式的设置为final形式的,但是类中的

    成员变量可以被定义为final形式或者非final形式.

static final

  • 声明的同时必须初始化

  • 能同时static和final关键字修饰的量。一般情况下,是公有的,静态的,不可改变的量

  • public static final修饰的量最好变量的名字全大写且单词间用下划线分隔。通过类名调用

    这个量。

  • 当一个常数或字符串我们需要在程序中反复使用的时候,我们就可以把它定义为static

    final,这样内存就不用重复的申请和释放空间了。

  • 针对引用类型变量的final修饰符也是很多人搞混淆的地方。实际上final只是修饰引用变量

    的值(也就是限定引用保存的地址不能变)。至于该引用指向的对象,内容是否能变,那

    就管不着了。所以,对于如下语句:

你可以修改它指向的对象的内容,比如:

但是不能修改它的值,比如:

总结

static 静态的 所有与静态相关的,都由static修饰

static修饰变量称之是静态变量,属于类存储在方法区,可以由类名直接调用

static修饰方法称之是静态方法,也属于类存储在方法区,可以又类名调用,静态方法中只能调用

静态变量和方法,非静态方法即可以调用非静态变量也可以调用静态变量和方法.

static修饰代码块称之是静态块,在类加载期间执行的代码块,只执行一次,一般用来做类的初始

化工作.


欢迎👏点赞+关注,笔芯❤️


150天打卡day14__static和final的评论 (共 条)

分享到微博请遵守国家法律