您的位置:首页 > 其它

(23)对象调用非静态方法执行过程、静态方法调用内存执行过程

2017-07-06 17:28 453 查看
public class Person{

private String name;
private int age;
private static String country="cn";
static {
System.out.println("Demo.class启动!!!");
}
{
System.out.println("默认的成员变量的值为:"+"name="+name+"  "+"age="+age+"country="+Person.country);
}
Demo (String name,int age){
this.name=name;
this.age=age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static void showCountry() {
System.out.println("country="+country);
speak();//静态方法体内可以调用静态方法,方法只有被调用,才能执行,静态方法用类名.成员调用
在同一个类中,类名.可以省略
//Person.speak();也可以这样写

 }
public static void speak() {
System.out.println(说说说!!11");
}

}
调用:Person p=new Person("张三",33);
p.setName(“王五”);

 


对象调用非静态方法内存图示:



注意:调用非静态方法,加载到栈中会有个this变量,谁调用它,它指向谁.当方法运行完后,在栈中的方法被释放,再次调用该方   法时,再产生

           静态成员都在方法区中,调用用类名.方法名,与栈或者堆无关
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐