请问下String name="";和String name=new String("");以及String name=null;有何区别,请说得详细点

解决方案 »

  1.   

    前两种结果是一样的,可能在jvm中不一样,name=“”有可能存在stack里,而name=new String("")可能在heap里,第三个只是声明了一个变量name,并且它的只是null
      

  2.   

    第一个是空串。分配了存储空间。创建的时候会在字符串池里查找相同的字符串。查找不到再生成实例。之后再把该引用添加到字符串池。
    第二个会马上在堆中创建对象。并且不会把创建的字符串加入到字符串池中。
    第三个是空引用,没有分配存储空间。不能调用String类的方法。