public class Book{
     long id;
     String name;
     String isbn; //书号
     String[] authors; //作者
     double price;
    }java文件中,Book对象是放在堆中,
现问
1 book中的 id name 等变量是放在哪呢
2 book中的 id name 等变量存放有顺序吗
thanks

解决方案 »

  1.   

    Book对象放在堆中,id, name是Book对象的一部分,当然是在堆中了
      

  2.   

    1楼的,
    id, name存放,有顺序吗,
      

  3.   

    应该是有顺序的,例,如下代码报非法向前引用:
    class Test1 {
        int i = j;  // compile-time error:
                    // incorrect forward reference
        int j = 1;
    }
      

  4.   

    Book book =new Book();book  这个是在堆中还是在栈中呢,
      

  5.   

    局部变量存栈,对象本身存堆,这段代码要是在方法中执行的,就是放在栈上,如果book是成员变量,则放堆上
      

  6.   

    Book book =new Book();
    这句代码如果是在一个方法中出现,那么Book book则会反应到java栈中的本地变量中,作为一个reference类型数据出现。而new Book()这部分则反应到java堆中,形成了一块存储了Object类型所有实例数据值的结构化内存,,另外,java堆中还必须包含能查找到此对象类型数据(对象类型、父类、实现的接口、方法等)的地址信息,这些类型数据则存储在方法区中。
      

  7.   

    对象在内存中的存储结构是未知的,不同的jvm实现可以按照自己的需求选择存储结构
      

  8.   

    所有的局部变量都可以说是都放在栈内存中的    你上面所写的变量都是放在栈内存中的
    对内存中存放的是占内存中的引用变量所指向的空间
    就这两个而言
    String isbn; //书号                           这是指向字符串缓冲池的
      String[] authors; //作者                   这是指向堆内存中的
    book中的 id name 等变量存放有顺序吗?
       你说栈内存有顺序吗!!!!其实有无顺序不重要,当程序运行完,整个都会释放掉的
      

  9.   

    java的所有对象都存放在堆中,book是一个对象,当然放在堆中。但是他有两个基本类型的成员属性id、price,JVM为了效率,将他们的直接以值的方式放在堆栈中。
      

  10.   

    放在new的对象里,new出来的对象名可看做局部变量放在stack中  栈
     对象名创建的同时 也创建了一个对象,在heap中 堆 成员变量在堆里  也就是你所创建的那个对象里!
      

  11.   

    Book是一个类,那个id,name等应该叫做属性而不是变量,new出来的东西都是放在堆内存中的。栈内存中存的是对象名和地址值,指向堆内存中的对象。而id,name作为对象的属性当然是属于对象的一部分,他们作为对象的一部分存在对内存中,如果你new的时候没有给出这些属性值,系统会给出默认值,当你给定了,就会用你给定的代替默认的。
      

  12.   

    当你创建了一个Book类的对象book即Book book=new Book();后,计算机内部会有如下操作:
    1,在栈内存中开辟一块空间,叫book。
    2,在堆内存中开辟一个空间创建一个Book的实例,叫new Book,这个时候会调用Book类的构造函数,由于你的类定义的时候没有写构造函数,所以会调用默认的无参构造,然后就创建了这个Book类的对象,对象的那些属性如id,name等就会用默认初始化值,同时会返回这个对象的地址值,返回给栈内存中的book。就算完成了。
    当你调用book的时候,系统会根据book里面存的地址值找到堆中的那个对应的对象,对象里会有各个属性。
      

  13.   

    book是新对象的地址,
    new一回就是一个新对象,