类写的不是很好,但结合下边的图解也能详细的了解Static的用法与不用的区别了
public class StaticDetailed {
// static修饰变量的区别
static String ClassV = "静态变量初始化";
String InstanceV = "实例变量初始化";
// static修饰代码块的区别
// 静态代码块
static {
System.out.println("静态代码块执行");
// ClassRoom="静态代码块执行";
}
// 成员代码块 //构造代码块
{
System.out.println("成员代码块/构造代码块执行");
// ClassRoom="成员/构造代码块执行";
}
// 无参构造函数
public StaticDetailed() {
}
//全参构造函数
public StaticDetailed(String ClassV, String InstanceV) {
this.ClassV = ClassV;
this.InstanceV = InstanceV;
}
// static修饰方法
// 静态方法
static void chage() {
System.out.println("执行静态方法");
}
// 成员方法
void chage2() {
System.out.println("执行实例方法");
{
System.out.println("执行实例方法中的代码块");
}
}
@Override
public String toString() {
return ClassV + InstanceV;
}
public static void main(String[] args) {
//第一次加载StaticBlock这个类,通过调用String类型的类变量
System.out.println(StaticDetailed.ClassV);
//new 执行无参构造new
StaticDetailed SD=new StaticDetailed();
System.out.println(SD.toString());
StaticDetailed SD2=new StaticDetailed("静态变量初始化2","实例变量初始化2");
//调用静态方法
SD.chage();
SD2.chage2();
}
}
附上图解
如果有什么问题欢迎指正
如果帮你解惑了欢迎1元支持