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

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变量,谁调用它,它指向谁.当方法运行完后,在栈中的方法被释放,再次调用该方   法时,再产生

           静态成员都在方法区中,调用用类名.方法名,与栈或者堆无关





























posted @ 2017-07-06 17:29  测试开发分享站  阅读(144)  评论(0)    收藏  举报