当前位置: 首页 > 知识库问答 >
问题:

java字符串级联与实习

仇炜
2023-03-14
String a1 = "I Love" + " Java";
String a2 = "I Love " + "Java";
System.out.println( a1 == a2 ); // true

String b1 = "I Love";
b1 += " Java";
String b2 = "I Love ";
b2 += "Java";
System.out.println( b1 == b2 ); // false
String a1 = "I Love" + " Java"; // line 1
String a2 = "I Love " + "Java"; // line 2

String b1 = "I Love";
b1 += " Java";
String b2 = "I Love ";
b2 += "Java";
String b3 = b1.intern();
System.out.println( b1 == b3 ); // false

上面的代码返回false,但是如果我注释掉第1行和第2行,它返回true。为什么会这样?

共有1个答案

鄢晔
2023-03-14

问题的第一部分很简单:Java编译器将多个字符串文本的连接视为单个字符串文本,即。

"I Love" + " Java"

"I Love Java"

是两个相同的字符串字元,它们被适当地存储

 类似资料:
  • 问题内容: 假设字符串a和b: 在幕后,他们是同一回事吗? 这里将concat反编译为参考。我也希望能够反编译该+运算符,以查看其作用。 问题答案: 首先,语义上略有不同。如果a是,则抛出一个,但将把原来的值a就好像它是null。此外,该方法仅接受值,而+操作员会将参数无提示地转换为(使用对象的方法)。因此,该方法在接受方面更加严格。 要深入了解,请写一个简单的类 ; 现在与一起拆卸(包括在Sun

  • 问题内容: 我正在从事Java代码优化。我不清楚或符号之间的区别: 第2行和第3行有什么区别? 问题答案: 这种方法使用StringBuilder创建结果字符串 此方法仅调用的静态方法来获取int的String版本 依次调用

  • 问题内容: 假设字符串a和b: 在幕后,他们是同一回事吗? 这里将concat反编译为参考。我也希望能够反编译该+运算符,以查看其作用。 问题答案: 不,不是。 首先,语义上略有不同。如果a是null,则抛出一个,但a+=b将把原来的值a就好像它是null。此外,该方法仅接受值,而+操作员会将参数无提示地转换为String(使用对象的方法)。因此,该concat()方法在接受方面更加严格。 要深入

  • 问题内容: 我看到许多人使用这样的格式字符串: 而不是像这样简单地串联字符串: 格式字符串是否具有更好的性能,还是仅用于外观? 问题答案: 这只是为了外观。您可以一眼看出格式是什么。我们中的许多人都比微优化更喜欢可读性。 让我们看看IPython的意思:

  • 问题内容: 我正在开发一个应用程序,在其中执行一些请求以获取对象ID。在它们每个之后,我调用一个方法()将此id作为参数传递(请参见下面的代码)。 可以注意到,我正在将其转换为前缀并将其与前缀连接。但是,我知道我能做到这一点的多种其他方式(或者,例如),并在我的问题的结果:将超过字符串连接更好的可读性,代码约定和效率方面? 谢谢 问题答案: 这很容易成为基于意见的主题,但是我发现格式在大多数情况下

  • 问题内容: 我在node.js中运行它: 我不明白的是为什么为什么要“漂亮地打印”对象,而字符串连接却“丑陋地打印”对象。更重要的是,使它打印的最佳方法是什么? 问题答案: 将对象强制转换为字符串,即: http://jsfiddle.net/Ze32g/ 漂亮的打印是一个很好的,可能非常复杂的基础代码,有人将其作为对象和方法的一部分来实现。 试试这个: