11.代码块,final(关键字)、工程的包创建格式
类有且仅有五大成分:1.成员变量 2.构造器 3.成员方法 4.代码块 5.内部类
我们已经学完了成员变量,构造器,成员方法,接下来我们来介绍以下代码快,代码块按照有无static可以分为静态代码块和实例代码块。
静态代码块 必须有static修饰,必须放在类下。与类一起加载执行。
静态代码块格式 :
特点: 每次执行类,加载类的时候都会先执行静态代码块一次。
静态代码块是自动触发执行的,只要程序启动静态代码块就会先执行一次。
作用: 在启动程序之前可以做资源的初始化,一般用于初始化静态资源。由于静态代码块是最先执行的代码,而且只会执行一次。所以在实际开发中我们常常用静态代码块加载配置文件信息(看不懂的代码)。
静态代码块执行的时机: 静态代码块不需要我们手动的去调用的, 静态代码块的代码是随着class文件被加载进内存的时候执行的。一个class文件在运行的时候只会加载一次,静态代码块在程序运行的时候只会执行一次。
以下为静态代码块案例 :
实例代码块 没有static修饰,必须放在类下。与对象初始化一起加载。
实例代码块格式:
特点: 无static修饰。属于对象,与对象的创建一起执行的。
每次调用构造器初始化对象,实例代码块都要自动触发执行一次。
实例代码块实际上是提取到每一个构造器中去执行的。
作用:实例代码块用于初始化对象的资源。
以下为实例代码块案例 :
实例代码块运行时机 :每创建d一个代码块所属类的对象都会执行一次。
实例代码块的底层原理: java编译器在编译的时候,实例代码块的代码会被复制到每一个构造器中。
实例代码块的作用 : 不管你使用任何构造器创建对象的时候,都需要执行的代码,为了减少重复代码,那么就可以把这些重复语句编写在实例代码块中。
final关键字用途 :
学习了继承后,我们知道,子类可以在父类的基础上改写父类内容,比如,方法重写。那么我们能不能随意的继承API中提供的类,改写其内容呢?显然这是不合适的。为了避免这种随意改写的情况,
Java提供了final 关键字,用于修饰不可改变内容。
final: 不可改变,最终的含义。可以用于修饰类、方法和变量。
类:final修饰的类,不能被继承。
方法:被修饰的方法,不能被重写。
变量:被修饰的变量,有且仅能被赋值一次。
final修饰的格式 :
查询API发现像 public final class String 、public final class Math 、public final class Scanner 等,很多我们学习过的类,都是被final修饰的,目的就是供我们使用,而不让我们所以改变其内容。
final修饰的方法,不能被重写,格式如下:
修饰变量-局部变量
局部变量——基本类型 基本类型的局部变量,被final修饰后,只能赋值一次,不能再更改。
如以下案例 :
修饰变量-实例成员变量
成员变量涉及到初始化的问题,初始化方式有三种,只能三选一,对于修饰实例变量:显示初始化(在定义成员变量的时候立马赋值);
以下为显示初始化案例 :
构造方法器(在构造器中赋值一次)。 注意:每个构造器中都要赋值一次!
修饰变量-静态成员变量
静态成员变量涉及到初始化的问题,初始化方式有两种,只能二选一,对于修饰实例变量: 显示初始化(在定义成员变量的时候立马赋值)以下案例:
被final修饰的常量名称,一般都有书写规范,所有字母都大写。
以下为静态代码块赋值案例 :
包package: 我们每天建的项目就是在一个目录下,我们每次都会建立一个包,这个包在磁盘下其实就是一个目录。包是用来分门别类的管理技术,不同的技术类放在不同的包下,方便管理和维护。
包名的命名规范: