为了账号安全,请及时绑定邮箱和手机立即绑定

以下代码段中创建了多少个字符串对象

以下代码段中创建了多少个字符串对象

FFIVE 2022-11-02 16:15:03
我需要帮助来确定我将提供的代码创建了多少对象。我会假设只有一个对象,因为没有使用“新”运算符,但我不确定。System.out.print("Enter a sentence : ");mySentence = keyboard.next();System.out.println("The original is  : " + mySentence);mySentence.toUpperCase();System.out.println("The same one is  : " + mySentence);mySentence = mySentence.toUpperCase();System.out.println("The raised is    : " + mySentence); 
查看完整描述

3 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

我数了十:

  1. 第一条语句创建一个 String ("Enter a sentence :") (1)

  2. 第二条语句创建一个字符串 (mySentence) (2)

  3. 第三条语句创建 2 个字符串(""原来是:"" 和串联的字符串) (3,4)

  4. 第四句创建一个新字符串(然后丢弃它)(5)

  5. 第五个语句再创建 2 个 (6,7)

  6. 第六个陈述创造了另一个(8)

  7. 最后的语句再创建 2 个 (9,10)


查看完整回答
反对 回复 2022-11-02
?
森林海

TA贡献2011条经验 获得超2个赞

这取决于。

每次创建 String 时,也会创建一个新对象(但这也取决于String pool)。您可以通过将两个字符串与 进行比较来证明这一点====测试引用相等(它们是否是同一个对象),同时.equals()测试内容相等。

System.out.print("Enter a sentence : ");

final String mySentence = keyboard.next();

System.out.println("The original is  : " + mySentence);

final String mySentence2 = mySentence.toUpperCase();

System.out.println("The same one is  : " + mySentence);

final String mySentence3 = mySentence.toUpperCase();

System.out.println("The raised is    : " + mySentence3); 

System.out.println(mySentence == mySentence2);

System.out.println(mySentence3 == mySentence2);

System.out.println(mySentence3 == mySentence);

输入字符串“FOO”的输出是(创建了 1 个对象)


The original is  : FOO

The same one is  : FOO

The raised is    : FOO

true

true

true

输入字符串“foo”的输出是(创建了 3 个对象)


The original is  : foo

The same one is  : foo

The raised is    : FOO

false

false

false

toUpperCase()调用toUpperCase(Locale.getDefault()),它仅在必要时创建一个新的 String 对象。如果输入字符串已经是大写,则返回输入字符串(参见此处)。


(加上 7 个对象,如果你计算字符串println)


查看完整回答
反对 回复 2022-11-02
?
莫回无

TA贡献1865条经验 获得超7个赞

每次调用 toUpperCase() 都会创建一个新的 String 对象。即使它看起来像是同一个对象,但它们在内存中技术上是不同的对象,如这段代码所示


String x = "hello";

String y = x.toUpperCase();

System.out.println(x.equals(y));

//yields false

因此,要回答您的问题,我会说创建了 3 个对象;尽管您没有在任何地方保存第二个,但它仍然被创建然后立即丢弃


查看完整回答
反对 回复 2022-11-02
  • 3 回答
  • 0 关注
  • 126 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信