课程
/后端开发
/Java
/Java入门第三季
String S1=“imooc”;
String S2=new String("imooc");
请问S1与S2区别在哪?
2016-08-11
源自:Java入门第三季 2-1
正在回答
没区别,一个是直接定义,另一个是通过创建一个对象的方式进行定义
菜鸟的羽毛 提问者
是有区别,学语言最怕得过且过。
区别在于,第一个在字符串常量池中创建。第二个实际在堆上。如果用==来比较两个字符串返回的是false。应为==是比较地址。字符串常量池不是栈哦
这实例化种方法一般会在堆内存中开辟两个空间,只用一个,比较浪费资源;所以一般采用直接赋值法
个人感觉是通过S1的方式创建的字符串是存放在栈区中的,而S2的创建方式是创建在堆中的,所以二者地址不一样,使用==得到的也是false
木吉他__秋 回复 菜鸟的羽毛 提问者
举报
Java中你必须懂得常用技能,不容错过的精彩,快来加入吧
1 回答字符串,字符串
5 回答空字符串问题
2 回答字符串截取问题
4 回答字符串中的问题
1 回答字符串2的问题