修饰符 - 用于修饰数据、方法、代码块以及内部类

静态变量

用static修饰变量,称之为静态变量,也叫类变量。

在类加载时加载到了方法区,并且在方法区中被赋予了默认值。静态变量时先于对象出现,所以习惯上市通过类名来调用静态变量。每一个对象存储的是这个静态变量在方法区中的地址,所以静态变量时被这个类的所有对象所共享的。

静态变量能否定义到构造方法中?---不能。静态变量是在类加载的时候出现,先于对象出现。构造方法在创建对象的时候执行。

注意:

1. 类是加载到方法区中的

2. 类是在第一次使用的时候才加载,加载之后就不会移除

java的变量怎么看是动态变量还是静态 java的静态变量何时生成的_静态变量

静态方法

用static修饰的方法,称之为静态方法。静态方法随着类的加载而加载到方法区中,但是在方法区中不执行只存储,在方法被调用的时候到栈内存执行。静态方法先于对象存在,所以习惯上是通过类名来调用静态方法。

main Arrays.sort() System.arraycopy()

静态方法中可以定义静态变量吗?--- 不能 --- 静态方法在调用的时候执行,静态方法执行的时候里面的变量才能初始化;静态变量是在类加载的时候初始化

静态方法中能否使用this/super?--- 不行 --- this代表当前在活动的对象,静态方法先于对象存在

能否在静态方法中直接使用本类中的非静态方法/非静态属性?--- 不行

public class A {
int i = 5;
public static void m(){
int j = (this.)i;
}
}

静态方法可以重载吗?---可以

静态方法可以被继承吗?---可以

静态方法可以重写吗?---不可以

静态方法虽然不能被重写,但是父子类中可以存在方法签名一致的静态方法 --- 静态方法的隐藏(hide)

注意:父子类中可以存在方法签名一致的方法,要么都是非静态(重写)要么都是静态(隐藏)

静态代码块

用static{}包起来的代码 --- 在类加载的时候执行一次

执行顺序:父类静态 -> 子类静态 -> 父类非静态 -> 父类的构造方法 -> 子类非静态 -> 子类的构造方法

java的变量怎么看是动态变量还是静态 java的静态变量何时生成的_静态方法_02