问答详情
源自:2-2 Java 中字符串的不变性

关于开辟内存的问题

请问String s1="imooc";

与String s2=new String("imooc");有什么区别?

提问者:biubiu木子小姐 2015-09-21 17:29

个回答

  • 天启之魂
    2015-09-21 18:57:44

    汗 上面说的有点问题  回复不能删除

    String s1 ="imooc"; 是讲s1指向堆内存中的字符串常量"imooc";

    而String s2=new String("imooc") 是在堆内存中开辟一个对象,对象中有一个变量记录的字符串是"imooc",s2指向这个对象

  • 天启之魂
    2015-09-21 18:50:07

    可以这么理解上面一个是将s1指向堆内存中的"imooc"变量,如果堆内存中已经有这个字符串了,s1就会直接指向这个字符串,没有则会新建一个

    下面这行通过new关键字 在堆内存中新开辟一个空间,空间中有个字符串为"imooc"

    每当你new 一次,堆内存中就会开辟一个新空间,