1.static 当他是修饰的方法的时候
如:public static void person()
{
}
public void A()
{
person();//直接调用,不需要new,必须实现,但占用内存
}
2.static修饰变量时候
其实质上就是一个全局变量。如果某个内容是被所有对象所共享,那么该内容就应该用静态修饰;没有被静态修饰的内容,其实是属于对象的特殊描述。
示例:
class Person{
//成员变量,实例变量
String name;
//静态变量,类变量
//所有对象共享的属性用static修饰
static String country = "CN";
public void show(){
System. out.println(country + ":" + name);
//等效语句:System.out.println(Person.country+ ":" + this.name);
}
}
class StaticDemo{
public static void main(String[]args){
Personp = new Person();
System. out.println(p.country);
//可以用类名直接调用
System. out.println(Person.country);
}
}
结果:
CN
CN
3.static修饰类时候
静态类主要是共享,静态类内部成员必须是静态的。 静态一般在程序加载的时候被构造。 我个人用静态类最多的地方的是程序配置部分,因为他的共享特性,在多个窗体中都需要调用,更主要的就是他在程序启动的时候就被初始化了。 静态类可以有构造函数,但是只被调用一次。 就上面说的程序配置数据部分,如果使用非静态类,那么你需要在任何有可能访问到他的代码前手动初始化他,并且还要将他赋给一个静态变量后才能使用。 费事不费事另说,假若你需要在他构造前某个位置来调用它,那还需要修改你构造他的代码的位置。 非静态类使用完成后系统会自动销毁释放,所以非静态类相对来说比较安全,而静态类是在程序结束后销毁的,在销毁前一直驻留在内存中,因此出现错误的可能性会大些。 建议不要过多的使用静态类,适时使用。
4.static 和final同时使用
public static final string user="china";//有静态变量的好处,同时这个变量不能修改
static final用来修饰成员变量和成员方法,可简单理解为“全局常量”!
对于变量,表示一旦给值就不可修改,并且通过类名可以访问。
对于方法,表示不可覆盖,并且可以通过类名直接访问
5.static修饰代码块时候
static代码块也叫静态代码块,是在类中独立于类成员的static语句块,可以有多个,位置可以随便放,它不在任何的方法体内,JVM加载类时会执行这些静态的代码块,如果static代码块有多个,JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。例如:
public
class
Test5 {
private
static
int
a;
private
int
b;
static
{
Test5.a=
3
;
System.out.println(a);
Test5 t=
new
Test5();
t.f();
t.b=
1000
;
System.out.println(t.b);
}
static
{
Test5.a=
4
;
System.out.println(a);
}
public
static
void
main(String[] args) {
// TODO 自动生成方法存根
}
static
{
Test5.a=
5
;
System.out.println(a);
}
public
void
f(){
System.out.println(
"hhahhahah"
);
}
}
运行结果:
3
hhahhahah
1000
4
5