A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王涛 黑马帝   /  2012-2-23 03:20  /  2438 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王涛 于 2012-2-24 10:54 编辑

看了视频,这点还是不太明白,是怎样调用的,在内存中的顺序是?
class Person
{
    private String name;
    private int age;
    private static String country = "cn";
    Person (String name,int age)
    {
       this.name = name;
       this.age = age;
    }
    public void setName (String name)
    {
       this.name = name;
    }
    public void speak()
    {
       System.out.println(this.name+"..."+this.age);
    }
    public static void showCountry()
    {
       System.out.println("country="+country);
    }
}
class PersonDemo
{
     public static void main(String[] args)
     {
             Person p = new Person("zhangsan",20);
             p.setName("list");
      }
}
想知道是哪个先执行的,在内存中的顺序?谢谢
哦,看糊涂了,,忘写了,呵呵

5 个回复

倒序浏览
朋友,你的这个程序没法运行啊,缺乏主函数啊。
回复 使用道具 举报
程序执行的时候总是先找main()函数,它是程序运行的入口,你这段代码根本没有main函数,无法运行
回复 使用道具 举报
这个程序要运行需在一个带有public static void main(String[]args)的主函数里面调用speak()
或者showCountry()方法,才可以看到运行的结果 ,至于那个先运行的话呢,就是根据你调用哪个方法在前,就先运行哪个吧
回复 使用道具 举报
同学如果是 Person p = new Person(name,age);
执行过程:
1 jvm先将Person的类的字节码装入内存
2字节码装入完成以后,会对静态的成员country分配内存并初始化cn
3创建对象,对成员属性name和age分配内存并初始化为null和0
4执行构造方法,并返回对象
回复 使用道具 举报
main函数
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马