静态变量
创建该类的实例后,系统才会为每个对象分配空间,存储各自的数据
static关键字只能用于修饰成员变量,不能用于修饰局部变量,否则编译会报错
package test;
public class test1 {
static String name="jack";
String nickname="tom";
}
package test;
public class test2 {
public static void main(String[] args) {
System.out.println(test1.name);//静态方法中只能访问用static修饰的成员
test1 man=new test1();
test1 woman=new test1();
System.out.println(man.nickname);
System.out.println(woman.nickname);
//重新定义后只能调用nickname,类只加载一次,因此
//静态只能调用一次
man.name="wang";
woman.name="hong";
System.out.println(man.name);
System.out.println(woman.name);//访问静态变量时只能输出一种结果hong这个结果
man.nickname="liu";
woman.nickname="su";
System.out.println(man.nickname);
System.out.println(woman.nickname);//两个输出结果都对应于
}
}
在方法前加上static关键字,通常称这种方法为静态方法。同静态变量一样,静态方法可以使用“类名.方法名”的方式来访问,也可以通过类的实例对象来访问
静态方法
package test;
public class test3 {
public void name(){
System.out.println("wang");
}
public static void nickname(){
System.out.println("hong");
}
}
package test;
public class test4 {
public static void main(String[] args) {
test3.nickname();//静态方法中只能访问用static修饰的成员
//test3.name();报错
test3 ts=new test3();//重新定义后才可以进行调用
ts.name();
ts.nickname();
}
}
使用一对大括号包围起来的若干行代码被称为一个代码块,用static关键字修饰的代码块称为静态代码块
静态代码块
package test;
public class test5 {
static String name;
static {
System.out.println("hello");
name="wang";
}
}
package test;
public class test6 {
public static void main(String[] args) {
System.out.println(test5.name);
System.out.println(test5.name);
//当类被加载时,静态代码块会执行,由于类只加载一次,
//因此静态代码块只执行一次。在程序中,通常会使用静态代码块来对类的成员变
// 量进行初始化
//输出: hello
// wang
// wang
}
}
总结:实例方法、 类方法、 实例变量、 类变量、 静态代码块、 非静态代码块