static
static
在多种计算机语言在常有用到
static
在java语言中作为修饰符也有着重要的地位
引入
static
修饰属性,可生成静态属性static
修饰方法,可生成静态方法static
修饰代码块,可生成静态代码块static
修饰类,可生成静态类
静态属性
//权限修饰符 static 数据类型 名称;
public static int num;
各个对象数据进行沟通,实现数据的共享
特点
static
声明的属性为类属性- 创建对象时,不产生
static
属性的拷贝 - 类所有实例共享一个
static
属性 - 类装载时,只分配一块存储空间,所以类的对象进行操作
- 静态属性值一旦改变,所有类的对象均共享改变
访问方式
由特点可知:
- 静态属性不属于任何实例,属于类对象
- 所以该类的实例都可进行操作静态属性
- 类名.公有静态属性名
- 对象名.公有静态属性名
//Demo为含有公有静态属性num的类
Demo d = new Demo();
//第一种方法
Demo.num = 1;
//第二种方法
d.num = 2;
静态方法
//权限修饰符 static 返回值类型 方法名(参数){
// 方法体;
//}
private static int num = 1;
public static int getNum(){
return num;
}
java的三大特性之一:封装
为了体现java的特性,所有类的属性一般设为私有(private
),
为了访问私有的静态成员,需要静态方法来实现该功能。
特点
- 不调用不执行。
- static方法独立于任何实例,因此static方法必须被实现,而不能是抽象的(abstract)
访问方式
- 类名.公有静态方法名(参数);
- 对象名.公有静态方法名(参数);
//Demo为含有私有静态属性num、公有静态方法getNum的类
Demo d = new Demo();
//第一种方法,用的最多
Demo.getNum();
//第二种方法
d.getNum();
使用规则
- 在静态方法中,只能直接调用其他
static
类型的方法 - 在静态方法中,只能直接访问
static
类型的属性 - 在静态方法中,不能使用
this
和super
静态代码块
静态代码块主要是初始化类中的静态变量。
static{
//代码块
}
特点
仅在类被加载时执行一次。
继承顺序
//父类
public class Parent{
static{
//代码块1
}
Parent(){
//代码2
}
}
//子类
public class Son extends Parent{
static{
//代码块3
}
Son(){
//代码4
}
}
//执行顺序
//代码1
//代码3
//代码2
//代码4
当一个类继承父类,父类和该类中有静态代码块
在该类加载时,代码的执行顺序为:
- 父类的静态代码块
- 子类的静态代码块
- 父类的构造方法
- 子类的构造方法
静态与非静态顺序
- 静态属性/静态代码块
- 非静态属性/非静态代码块
- 构造方法
静态类
普通类不允许声明为静态,内部类可以
声明为静态的内部类可以直接作为一个普通类来使用,而不需实例化一个外部类。
final
final和static一起使用,修饰成员变量和方法,可作为全局常量
-
static final 常量,一旦赋值不可修改,可通过类名访问
-
static final 方法, 不可覆盖,可通过类名访问
博客相关java项目:查看Github项目
对应github项目:Static
导入项目的方法: Java基础——Java如何导入本地项目