黑马程序员技术交流社区

标题: String类型问题 [打印本页]

作者: 专职黑马100年    时间: 2014-11-23 22:48
标题: String类型问题
String s =new String(" ")
String s ="";本质上的区别在哪

作者: 依米阳光    时间: 2014-11-23 23:37
在网上找的答案分享一下:
存放地方的区别:
第一个s是一个字符串常量,它存放在内存栈区。
第二个s是一个对象,它是存放在堆中的。
用法的区别:
第二个是个对象,所以可以用String类中的所有方法,而第一个不是对象,它不可以操作String类中的方法
作者: 夜海    时间: 2014-11-24 00:56
第一个两个对象
第二个以个对象
s   都是变量  
作者: zhangyangLengen    时间: 2014-11-24 09:29
第一个:是存在于堆内存中
第二个:是直接存在常量池中,先在常量池,看看有没有这个常量,如果有,就直接指向这个常量池中的值。
作者: mmppp    时间: 2014-11-24 14:53
第一个  new 一个变量,“”一个变量。
第二个,就一个变量。。。
作者: 与梦逆风而行    时间: 2014-11-24 17:59
依米阳光 发表于 2014-11-23 23:37
在网上找的答案分享一下:
存放地方的区别:
第一个s是一个字符串常量,它存放在内存栈区。

额    为啥  感觉你好像说反了
作者: william_J    时间: 2014-11-24 21:58
第一个是俩个对象,在堆内存中有一个,常量池有一个对象,总共俩个
第二个是一个对象,就是常量池中有一个对象!
作者: sunyeyu    时间: 2014-11-24 22:22
第一个其实 创建了 两个对象 一个是在常量池中 一个是new 出来的string 对象在堆内存中 两者单向链接 ,然后再指向s。
第二个只是创建了一个对象在常量池中 开辟一个空间 存储“ ”然后地址直接指向s。
作者: huangkj    时间: 2014-11-24 22:32
第一个在堆内存开辟了空间new了对象,new的对象指向常量池,相当于有2个对象。 第二个是s引用直接指向常量池
作者: 迷失的小Z    时间: 2014-11-24 22:34
一个俩对象 一个一个对象……




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2