由static定义的被称为类属性 例如( static String company = "博客园" )
类方法 例如( public static void printCompany() )
这些类属性类方法,在程序加载的时候是与 类 一同加载的。在他们加载的时候,普通方法(no-static方法)则是还没有加载,固然是不能直接调用的。而在
static String company = "博客园"; //类属性,静态属性
public static void printCompany() //类方法,静态方法
其中在类方法中,调用非静态方法就会报错,这是因为非静态方法,属于普通方法(?),并且属于对象。而对象存放在堆中;
类(static)则实在方法区中,没法直接和 堆、栈 相连接。 如下代码中在静态方法中调用非静态方法则会报错。
public static void printCompany(){ //static 方法是在方法区的,没办法直接和堆栈里连接
login(); //调用非静态方法就会报错
TestStatic t2 = new TestStatic(10,"李四","123");
t2.login(); //可以和main方法中一样选择使用方法体进行对非静态方法的调用。
}
同理,类方法里,就可以调用类属性以及类方法,因为他们同放置在static那个框框里,所以他们在初始化的时候都在一起加载,可以找得到对方
static String company = "阿里巴巴";
static void printid(int id){
System.out.println(id);
}
public static void printCompany(){
System.out.println(company);
printid(13);
}
2023-04-16