static静态关键字所修饰的内容是属于类的,凡是本类的对象,都共享该内容。
static关键字用来修饰一个变量,那这个变量是属于类的;用来修饰方法,该方法即静态方法,静态方法不属于对象,属于类。
有无static修饰的方法区别:
- 若一个方法无static关键字修饰,则需创建对象后,通过对象来调用才能使用该方法
- 若有static修饰,即对于静态方法来说,可以通过对象名调用(不推荐),也可以通过类名调用使用(推荐)
- 对象名.静态方法名 这种写法在编译后也会被javac翻译为:类名称.静态方法名
- 静态变量同样推荐 类名称.变量名 调用
- 对于本类中的静态方法可以省略类名之间写方法名调用
注意事项:
- 静态不能直接访问非静态:因为在内存中是先有静态内容,后有非静态内容;“先人不知后人,但后人知先人”,故非静态可以访问静态,反之则不行
- 静态方法中不能使用this关键字:this代表当前对象,通过谁调用,谁就是对象;而静态方法是属于类的,不属于对象。
静态代码块:
1. 代码块: 用{ } 包起来的就叫代码块
2. 静态代码块格式:
public class 类名称{
static{
// 静态代码块的内容
}
}
- 特点:当第一次使用到本类时,静态代码块执行唯一的一次。
- 注:静态内容总是优先于非静态内容,故静态代码块比构造方法先执行。
- 典型用法:用来一次性地对静态成员变量赋值。