static (最经常用于定义工具类)
1:用来定义类的成员变量(类变量),
-
1:类变量需要被static修饰,实例变量不需要。
2:作用域不同,类变量的作用域更大
3:直接属于类,所有的类成员在内存中只存在一份,存放在常量池中(而实例变量存在多份,存在堆内存中)
4:由于其直属于类,所以可以通过类名直接调用。2:用来定义类方法
类方法也叫做静态方法,只需要在实例方法上加上static 就是类方法,证明这个方法直接属于类,可以通过类名直接调用。
我们调用静态方法的时候,有可能是没有创建实例对象的,所以在静态方法中无法直接访问实例属性及方法。
所有的静态成员在类被JVM加载的时候都已经存在,所以不需要声明对象即可调用。
3.代码块分类:
1:静态块
直接写在类中,被static修饰,在程序运行期间只会执行一次,在类被加载的时候执行
2:构造块
直接写在类中,每创建一个对象执行一次。
3:普通代码块
写在方法中,一般很少使用,用于解决变量名冲突问题
4:同步块
专门解决多线程问题,被同步块修饰的代码作用域同时只能进入一个线程。
static {
System.out.println("静态代码块,只会执行一次");
}
{
System.out.println("构造代码块,每次创建的对象执行一次");
}