Java基础面试——final、static注意点

来源:互联网 发布:上位机编程用什么语言 编辑:程序博客网 时间:2024/06/07 11:43

前言:
这节主要是对final、static这两个关键词一些注意点的记录,没有什么条理,想到了就记录下来。

正文:

final:

final可用于成员变量、局部(本地)变量、方法以及类
当final修饰类成员变量时,两种赋值方式,要么在定义时赋值,要么在类的构造函数中给final变量赋值,否则编译出错。如图:

  • 方式一,在定义时赋值:

这里写图片描述

  • 方式二,在类的构造函数中给final变量赋值:

这里写图片描述

但是,当final修饰局部变量时,可以不在定义时赋值,如图:
这里写图片描述

关于局部变量和成员变量的初始值的一些注意点:
局部变量必须要自己赋值,不然编译出错;成员变量的话,java虚拟机会为其赋默认值,对于不同的数据类型,默认值也不一样:

  • 1、整数类型(byte、short、int、long)的基本类型变量的默认值为0。
  • 2、单精度浮点型(float)的基本类型变量的默认值为0.0f。
  • 3、双精度浮点型(double)的基本类型变量的默认值为0.0d。
  • 4、字符型(char)的基本类型变量的默认为 “/u0000”。
  • 5、布尔性的基本类型变量的默认值为 false。
  • 6、引用类型的变量是默认值为 null。
  • 7、数组引用类型的变量的默认值为 null。

static:

  • 可用于成员变量和成员方法,被保存在类的内存区的公共存储单元中,而不是某个对象的内存区。
  • 静态成员方法中不能访问非静态成员变量和非静态成员方法。非静态成员方法中可以访问静态成员方法和变量。
  • 静态成员变量和静态成员方法有两种方式被引用,一是使用对象关联的引用变量名做前缀,二是使用类名作为前缀。

补充:

父类子类加载顺序

  • 1.父类静态代码块和静态成员,按在类中出现的顺序依次执行。
  • 2.子类静态代码块和静态成员,按在类中出现的顺序依次执行。
  • 3.父类的非静态变量初始化
  • 4.父类的构造方法
  • 5.子类的非静态变量初始化
  • 6.子类的构造方法

注意:静态方法调用时才会加载。

原创粉丝点击