请大家从本质上给我讲解一下,譬如堆栈......

解决方案 »

  1.   

    2个string对象,一个是=null的s,一个是=“xyz”的string 
      

  2.   

    两个,一个是存储在堆上的XYZ,一个是存储在栈上的S变量,S存储的是XYZ在堆上的首地址
      

  3.   

    创建了一个对象。
    在内存中申请了一块内存单元,指针为S,内容为“xyz”
      

  4.   

    2个string对象,一个是=null的s,一个是=“xyz”的string 
      

  5.   

    面试官的确无聊正确来说只是创建了一个对象
    但如果将问题改成:String s=new String("XYZ")请问创建几个堆栈?
    那么答案就是2个
      

  6.   

    使用了2块空间,一块在在栈上,地址;  一块在堆上的字符串内容。只创建了一个对象,字符串池里面的“XYZ”字符串。   虽然面向对象里面一切都可以是对象,但是暂时那个地址还不算一个对象(要你再额外做一些事情它才算个对象)
      

  7.   

      面试管的确和无聊!  可是这个问题好多都说不清到底是问什么?
    NET715    两个,一个是存储在堆上的XYZ,一个是存储在栈上的S变量,S存储的是XYZ在堆上的首地址我也比较赞同这种说法。  但是问什么还说2个?    s是个变量啊WPGDHC  3个   你更强! 说下问什么?
    syeerzy  你这个是正解吧!  (要你再额外做一些事情它才算个对象)    就是做对象和变量区别的事情?try503   怎么是=null的是?
      

  8.   

    String s=new String("XYZ") 这条语句会影响到内在当中的两个地方,一个是堆区域一个是栈区域。堆里存储的是XYZ这三个字母,当然这三个字母就会有一个地址了,假如X存储在x01234那么yz分别就存储在x01235和x01236了。这是堆当中存储的情形;而栈当中也会有一个区域就是存储xyz的首地址(x01234),那么栈当中这个区域就是用S来表示了,这次应该明白了吧。其实S存储的就是XYZ的首地址(x01234)
      

  9.   

    貌似 这应该是两个对象。。一个是"XYZ",它是一个字符串 但是它只定义有存储,没有定义引用。一个是s,它也是一个字符串,它存储了一个地址,指向了"XYZ"存储的位置。
    因为即使是独立的一行写"XYZ"; 编译器也不会报错,在执行的时候,系统也会非配内存,但是因为它没有引用,很快就会被gu回收掉。但无论怎么说,它都已经是一个存在过的字符串了。
      

  10.   

    对于创建了几个对象得看上文! 当这一行代码不能判断产生了几个对象
    如果上文的对象已经在字符串连接池中创建一个"xyz"的对象,
    那么这行代码就只创建一个对象存储在堆中指向字符串连接池中已经存在的那个"xyz"对象,在栈中存储堆中对象的引用不属于对象。如果字符串连接池中不存在"xyz"的对象,那么就会在字符串连接池中创建一个"xyz"的对象,并在堆中创建一个对象指向字符串连接池中的那个"xyz"对象,在栈中同样也是存储堆中对象的引用不属于对象。【当定义String s = "xyz"或者定义String s = new String("xyz");时如果字符串连接池中不存在"xyz"对象,则都会在字符串连接池中创建"xyz"对象】希望楼主从根本上去理解问题! 这样以后遇到这样的问题就都可以解决掉了