问答详情
源自:2-1 什么是 Java 中的字符串

字符串提问

String S1=“imooc”;

String S2=new String("imooc");


请问S1与S2区别在哪?

提问者:菜鸟的羽毛 2016-08-11 09:29

个回答

  • 刘忠新
    2016-08-11 10:11:55
    已采纳

    没区别,一个是直接定义,另一个是通过创建一个对象的方式进行定义

  • AI方法
    2016-09-08 10:55:17

    是有区别,学语言最怕得过且过。

  • 蚂蚁_0014
    2016-08-30 22:08:25

    区别在于,第一个在字符串常量池中创建。第二个实际在堆上。如果用==来比较两个字符串返回的是false。应为==是比较地址。字符串常量池不是栈哦

  • qq_张浩_7
    2016-08-21 17:42:53

    http://img.mukewang.com/57b977160001535706670339.jpg这实例化种方法一般会在堆内存中开辟两个空间,只用一个,比较浪费资源;所以一般采用直接赋值法


  • 木吉他__秋
    2016-08-11 10:41:04

    个人感觉是通过S1的方式创建的字符串是存放在栈区中的,而S2的创建方式是创建在堆中的,所以二者地址不一样,使用==得到的也是false