前提概要:
实例变量和静态变量的区分。
- 当所有对象都有这个属性,但是这个属性的值会随着对象的变化而变化,此时应当声明为实例变量。
- 当所有对象都有这个属性,但是所有对象的这个属性的值是一样的,此时定义为静态变量(静态变量当然可以通过对象访问,但是建议通过类名. 的方式访问),节省内存开销。
静态变量在类加载的时候初始化,存在方法区内存。访问的时候不需要创建对象,直接使用“类名.静态变量名”的方式访问。
关于Java中的static关键字:
- static(静态的);
- static修饰的方法是静态方法;
- static修饰的变量是静态变量;
- 所有static修饰的元素都可以通过“类名.”的方式访问,不过也是可以用“对象.”的方式访问(但是没必要啊,你还需要new个对象才能访问,多此一举);
- static修饰的元素都是类级别的,和具体的对象无关。
关于静态代码块以及实例代码块:
- 静态代码块:
-语法格式:
static{
java语句;
}
-静态代码块在类加载时执行,并且只执行一次。
-静态代码块在一个类中可以编写多个,自上而下顺序执行。
-静态代码块主要用于记录类加载的时间,并且生成日志。
-静态代码块还可以用于一些预备工作,完成数据的准备工具,例如:初始化连接池,解析XML配置文件… - 实例代码块:
-语法格式:
{
java语句;
}
-实例代码块在构造方法执行前执行。
-实例代码块在一个类中可以编写多个,自上而下顺序执行。
-实例代码块也是java语音为程序员准备的一个特殊的时机,这个特殊时机叫做:对象初始化时机。
总结:
一个class类里面只会这些类型:
class 类{
静态代码块;
实例代码块;
静态变量;
实例变量;
构造方法;
静态方法;
动态方法;
}
所有的类,都是这7个的部分或者全部。