class Person
{
private int age;
private String name;
static private int eyes = 2; //静态成员
Person(int age,String name) //构造函数
{
this.age = age;
this.name = name;
}
public void print() //普通函数
{
System.out.println(this.name+"的年龄:"+this.age);
}
public static void showCountry() //静态函数
{
System.out.println("人有"+Person.eyes+"只眼睛");
}
}
public class Test //拥有主函数的测试类
{
public static void main(String[] args)
{
Person.showCountry();
Person p = new Person(22,"yyh");
p.print();
}
}
当Test这个类开始被调用时,Test的方法被载入共享数据区,其中分为静态区和非静态区,如上图所示。
继续运行开始调用main函数,将main函数加载到栈内存中。
运行到Person.showCountry();
需要将Person类加载到方法区,按照静态与非静态,然后将showCountry()载入到栈内存中运行,按照函数语句输出静态变量eyes,然后函数运行结束,弹栈并返回到main函数。
运行
Person p = new Person(22,"yyh");
结果如上图所示
而接下来运行p.print()一样是载入到栈内存然后弹栈,运行过后返回,最终将main函数弹出,程序运行完毕。如上图所示。