关键字static和final
关键字static和final
关键字static
-
static是静态的意思,可以修饰成员变量和成员属性
-
static修饰成员变量表示该成员变量只在内存中只存储一份,可以被共享访问、修饰
static修饰变量
1.静态成员变量(有static修饰,属于类,内存中只加载一次)
调用方法:
类名.静态成员变量(推荐)
对象.静态成员变量(不推荐)
实例成员变量(无static修饰,存在于每个对象中)
调用方法:
对象.实例成员变量
static修饰方法
1.静态成员方法(有static修饰,归属于类)
调用方法:
类名.静态成员方法(推荐)
对象.静态成员方法(不推荐)
2.实例成员方法(无static修饰,归属于对象)
调用方法:
对象.实例成员方法
static注意事项
1. 静态方法只能访问静态的成员,不可以直接访问实例成员
2.实例方法可以访问静态的成员,也可以访问实例成员
3.静态方法是不可以出现this关键字的
static的应用
工具类:
类中都是一些静态方法,每个方法都是以完成一个共用的功能为目的,这个类用来给系统开发人员共同使用的
一次编写,处处可用,提高代码的重用
工具类有什么要求:
建议工具类的构造器私有化处理
工具类不需要创建对象
代码块:
代码块是类的5大成分之一(成员变量,构造器,方法,代码块,内部类),定义在类中的方法外
在java类下,使用{}括起来的代码被称为代码块
代码块分类:
静态代码块:static{}
特点:需要通过static关键字修饰,随着类的加载而加载,并且自动触发,只执行一次
使用场景:在类加载的时候做一些静态初始化的操作,以便后续使用
构造代码块:{}
特点:每一次创建对象,调用构造器执行时,都会执行该代码中的代码,并且在构造器执行前执行
使用场景:初始化实例资源
static单例设计模式
单例模式:
可以保证系统中,应用该模式的这个类永远只有一个实例,即一个类永远只能创建一个对象
饿汉单例:在用类获取对象的时候,对象已经提前为你创建好了
懒汉单例:在真正需要改对象的时候,才去创建一个对象(延迟加载对象)
设计步骤:
定义一个类,把构造器私有
定义一个静态变量存储一个对象
提供一个返回单例对象的方法
关键字final
final作为Java中的关键字可以用于三个地方。用于修饰类、类属性和类方法。
特征:凡是引用final关键字的地方皆不可修改!
(1)修饰类:表示该类不能被继承;
(2)修饰方法:表示方法不能被重写;
(3)修饰变量:表示变量只能一次赋值以后值不能被修改(常量)。
final修饰变量的注意事项
1. final修饰的变量是基本类型:那么变量存储的数据值不能发生改变
2. final修饰的变量是引用类型:那么变量存储的地址值不能发生改变,但是地址指向的对象内容是可以发生变化的