关于开辟内存的问题

来源:2-2 Java 中字符串的不变性

biubiu木子小姐

2015-09-21 17:29

请问String s1="imooc";

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

写回答 关注

2回答

  • 天启之魂
    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 一次,堆内存中就会开辟一个新空间,


Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题