这题选什么?java的题

 我来答
萧瑟如枫啊
2018-05-12 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:82
采纳率:0%
帮助的人:32.1万
展开全部

我来给你个满意的解释,记得采纳

首先有个字符串池(String Pool)的概念。 这个不懂你百度吧,我就不解释了。我按照代码顺序给你讲解。

  1. String str1 = “Hello”;(采用的是字面值方式赋值)

  • 首先查找字符串池是否存在“Hello”这个对象,如果不存在,则在字符串池中创建一个“Hello”对象,然后将字符串池中的这个“Hello”对象的地址返回,赋给引用变量str1,然后str1就会指向字符串池中的这个“Hello”对象

  • 如果存在,则不创建任何对象,直接将字符串池中的这个“Hello”对象地址返回,赋给str1引用。

2.String str2 = new String("Hello");

  • 首先在字符串池中查找有没有“Hello”这个字符串对象,如果有,则不在字符串池中再去创建“Hello”这个对象了,直接在堆中(heap)中创建一个“Hello”字符串对象,然后将堆中的这个“Hello”对象的地址返回来,赋给str2引用,导致str2指向了堆中创建的这个“Hello”字符串对象。

  • 如果没有,则首先在字符串池中创建一个“Hello”对象,然后再在堆中(heap)创建一个“Hello”对象,然后将堆中的这个“Hello”对象的地址返回来,赋给str2引用,str2就会指向堆中所创建的这个“Hello”对象。

对于String类的equals()方法来说,它是判断当前字符串与传进来的字符串的内容是否一致

“==”判断的是两个引用是否指向同一个对象,即地址是否相同。 (Object类的equals()方法等价于“==”)

更多追问追答
追问
请说
追答
你看吧
tiantianshagn
2018-05-12 · 超过24用户采纳过TA的回答
知道答主
回答量:78
采纳率:0%
帮助的人:48.5万
展开全部
C
equals 就不用说了, 只要值对就对
new String() 其实有误导作用, 因为值不是写在 new String("Hello") 里面,是str1 = "Hello"
java 中赋值字符串会有一个缓存, 如果赋值过一次,下一次就一直用这个值,也就是内存地址一样的。 也就是说:
str=“Hello” str1 ="Hello" “Hello”其实也是一对象地址,不会新建的。 而 new String(“Hello”) 会新建 ,别被 new String() 误导。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
般码宫
2018-05-12 · 子非鱼,安知阴阳鱼乐
般码宫
采纳数:221 获赞数:458

向TA提问 私信TA
展开全部

不多说,自己看图

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
独孤怎会求败
2018-05-12 · TA获得超过365个赞
知道小有建树答主
回答量:219
采纳率:71%
帮助的人:119万
展开全部
A两个字符串值相等
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Lee1245645
2018-05-12 · 超过14用户采纳过TA的回答
知道答主
回答量:81
采纳率:34%
帮助的人:23.8万
展开全部
选A
更多追问追答
追问

请看这个
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式