一、类变量

1、静态代码块 static{ }

静态代码块只会被执行一次;

2、类定义的时候,类中变量创建在代码区,此时静态代码块会被自动执行;

3.类变量是唯一为类中所有对象共享的变量。如果一个类变量同时还被定义为public类型那么其他类也同样可以使用这一变量,而且由于类变量的内存空间是在类定义的时候就已经分配的,因此引用这一变量时无需生成一个该类的对象,而是直接利用类名即可指向它。

4.类方法
如果需要用到尚未创建一个对象实例就去引用它的程序代码,那么将方法标记上关键字static
如果从当前类中的其他方法中调用,可以直接写方法名。
注意事项:(1)由于静态方法可以在没有定义它所从属的类的对象的情况下使用,故不存在this值。
因此一个静态方法是能使用其内部定义的参数或静态变量。
(2)静态方法不能被重写
(3)静态方法不能调用非静态方法
会发生:Non-static method “。。。” cannot be referenced from a static context
例子:

package smm;

public class LearnStatic {

static int  i=1;
static{//静态代码块只会被执行一次
	System.out.println("a");
	i++;
}
public LearnStatic(){
	System.out.println("b");
	i++;
}

public static void main(String[] args) {
	// TODO Auto-generated method stub
	LearnStatic l1=new LearnStatic();
	System.out.println(l1.i);

	LearnStatic l2=new LearnStatic();
	System.out.println(l2.i);

}

}
输出结果:

a

b
3
b
4

3、类变量与实例变量的区别

(1)类变量属于类,可以共享,属于公共属性;实例变量属于某个对象个体;

(2)加上static 为类变量或者静态变量,否则为实例变量;

二、类方法

与类变量相似,从变量到方法。