这题选什么?java的题

2025-05-10 02:23:01
推荐回答(5个)
回答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()方法等价于“==”)

回答2:

C
equals 就不用说了, 只要值对就对
new String() 其实有误导作用, 因为值不是写在 new String("Hello") 里面,是str1 = "Hello"
java 中赋值字符串会有一个缓存, 如果赋值过一次,下一次就一直用这个值,也就是内存地址一样的。 也就是说:
str=“Hello” str1 ="Hello" “Hello”其实也是一对象地址,不会新建的。 而 new String(“Hello”) 会新建 ,别被 new String() 误导。

回答3:

不多说,自己看图

回答4:

A两个字符串值相等

回答5:

选A