A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 专职黑马100年 中级黑马   /  2014-11-23 22:48  /  879 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

String s =new String(" ")
String s ="";本质上的区别在哪

9 个回复

正序浏览
一个俩对象 一个一个对象……
回复 使用道具 举报
huangkj 中级黑马 2014-11-24 22:32:00
9#
第一个在堆内存开辟了空间new了对象,new的对象指向常量池,相当于有2个对象。 第二个是s引用直接指向常量池
回复 使用道具 举报
sunyeyu 初级黑马 2014-11-24 22:22:31
8#
第一个其实 创建了 两个对象 一个是在常量池中 一个是new 出来的string 对象在堆内存中 两者单向链接 ,然后再指向s。
第二个只是创建了一个对象在常量池中 开辟一个空间 存储“ ”然后地址直接指向s。
回复 使用道具 举报
第一个是俩个对象,在堆内存中有一个,常量池有一个对象,总共俩个
第二个是一个对象,就是常量池中有一个对象!
回复 使用道具 举报
依米阳光 发表于 2014-11-23 23:37
在网上找的答案分享一下:
存放地方的区别:
第一个s是一个字符串常量,它存放在内存栈区。

额    为啥  感觉你好像说反了
回复 使用道具 举报
第一个  new 一个变量,“”一个变量。
第二个,就一个变量。。。
回复 使用道具 举报
第一个:是存在于堆内存中
第二个:是直接存在常量池中,先在常量池,看看有没有这个常量,如果有,就直接指向这个常量池中的值。
回复 使用道具 举报
第一个两个对象
第二个以个对象
s   都是变量  
回复 使用道具 举报
在网上找的答案分享一下:
存放地方的区别:
第一个s是一个字符串常量,它存放在内存栈区。
第二个s是一个对象,它是存放在堆中的。
用法的区别:
第二个是个对象,所以可以用String类中的所有方法,而第一个不是对象,它不可以操作String类中的方法
回复 使用道具 举报 0 1
您需要登录后才可以回帖 登录 | 加入黑马