那我又请教如果 int a=0;的啊是引用或者是变量的话?那要是实例化一个基本类型呢?如何实例化,实例化后和上面的有区别吗?

解决方案 »

  1.   

    疯了
    Integer a = new Integer(10);
    不就完了么
      

  2.   

    int a = 0;
    a是一个变量。用C语言描述,无非就是
    struct Variable
    {
        char* name;
        union {
           int ivalue;
           double dvalue;
           bool bvalue;
        };
    };*value保存了变量的值。在Java语言中算不得对象。
    Integer a = new Integer(10); 
    这里a依然是变量,但是指向了一个对象。你可以看成是:
    struct Variable
    {
        char* name;
        union {
           int ivalue;
           double dvalue;
           bool bvalue;
           java.lang.Object* p;//NOTICe HerE!.
        };
    };这个p会指向Integer对象。这个就是JVM里面一个变量的实现示意。
      

  3.   

    在Java虚拟机中,基本数据类型的变量的值是存储在栈中的。
    而对象的存储分为2个部分,一个是堆中存储对象真正的内容,而把这些内容的地址存储在栈中。
    所以两个对象,例如obj1 == obj2进行比较,实际比较的是这两个对象存储在栈中的内容,也就是内存地址。
      

  4.   

    那要是实例化一个基本类型呢?------------------------------回lz,Java中的8种基本类型不是对象,没有所谓实例化过程.
    而8中基本类型的包装类,则和String类情况相同.