一、类变量
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 为类变量或者静态变量,否则为实例变量;
二、类方法
与类变量相似,从变量到方法。