解决方案 »

  1.   

    很简单,您可以直接打印s1和s2,如果按你的理解应该会输出null和一串地址,但其实应该2个都是有地址的就都不是空的
      

  2.   

    指向堆没问题。不过不是null。 你不是new了数组么。。
      

  3.   


    0  iconst_0
    1  anewarray java.lang.String [16]
    4  astore_1 [t0]
    5  iconst_1
    6  anewarray java.lang.String [16]
    9  astore_2 [t1]有闲心提问,就没闲心去动动手?
    数组对jvm来说是很特殊的一种对象,在jvm内部处理,但无论预分配空间是多少,jvm都会用anewarray或者newarray建立一个“数组对象”
      

  4.   


    额,对jvm不太熟.. 我是测试之后看不到结果才提问的。
      

  5.   

    s1 和s2栈的地址都会输出,但是s1指向的堆的内容没法输出,s2指向的堆,再指向s2[0],内容是null。
    所以我认为s1指向的堆的内容是null。(表达不好,哎)
      

  6.   

    长度为0也是数组,仍然会分配数组空间,只是长度为0,第二个当然是长度为1的数组,只是2个一开始内容都是null
      

  7.   

    赞同@xiangnan129  @Molly_1994意见