一、 静态变量和成员变量的区别
1. 所属范围不同。
静态变量所属于类,成员变量所属对象。
静态变量也称为类变量。
成员变量称为实例变量。
2. 调用不同
静态变量可以被对象和类调用(一般用类名调用)
成员变量只能被对象调用。
3. 加载时期不一样
静态变量随着类的加载而加载。
成员变量着对象的加载而加载。
4. 内存存储区域不同
静态变量存储在方法区中。
成员变量存储在堆内存中。
二、怎样让类加载就做出一些动作,不需要对象(静态代码块)
class zx {
static//静态代码块
{
...
}
}
特点:随着类的加载而执行
class Demo {
static int x = 9;//先执行显式初始化
//静态方法只能调用静态变量
static//然后在执行此代码块
{
...
}
}
注意: 显式初始化:在定义时直接初始化赋值,如
int a = 1;
。默认初始化:变量值为null。
三、构造代码块
class Demo {//对所有对象初始化
{
System.out.println(1);
}
Demo(){
System.out.println(2);
}
Demo(n){
System.out.println(n);
}
}
class Main {
puiblic static void main(String[] args){
new Demo();
new Demo(3);
}
}
输出结果如下
//每次都有1
1
2
1
3
构造代码块,只要创建对象就会被调用。
给所有对象初始化,而构造函数只给对应的对象针对性的初始化。
四、局部代码块
能用局部的尽量用局部,省内存
class Demo {
{
int a = 1 ;
System.out.println(a);
}
System.out.println(...);
}
对 int a 仅加载了一次。
class Demo {
{
int a = 1 ;
System.out.println(a);
}
System.out.println(...);
}
此时代码 对int a 加载了两次。