当前位置: 首页 > 面试题库 >

字符串和字符的串联

阳宗清
2023-03-14
问题内容

以下语句,

String string = "string";

string = string +((char)65) + 5;
System.out.println(string);

产生输出stringA5

但是,以下内容

String string = "string";

string += ((char)65) + 5;
System.out.println(string);

产生string70

区别在哪里?


问题答案:

您会因为操作符优先级和字符串转换的结合而看到此行为。

JLS
15.18.1
指出:

如果只有一个操作数表达式的类型为String,则对另一操作数执行字符串转换(第5.1.11节),以在运行时生成字符串。

因此,第一个表达式中的右侧操作数将隐式转换为字符串: string = string + ((char)65) + 5;

但是对于第二个表达式,必须string += ((char)65) + 5;+=复合赋值运算符与一起考虑+。由于+=比弱+,因此+首先评估运算符。那里有一个char和一个 int
,导致将二进制数值提升为int。仅然后+=评估,但此时+已经评估了涉及运算符的表达式的结果。



 类似资料:
  • 字符串是一系列的字符,比如说 "hello, world"或者 "albatross"。Swift 的字符串用String类型来表示。String的内容可以通过各种方法来访问到,包括作为Character值的集合。 Swift 的 String  和 Character  类型提供了一种快速的符合 Unicode 的方式操作你的代码。字符串的创建和修改语法非常轻量易读,使用与 C 类似的字符串字面

  • 本页包含内容: 字符串字面量 初始化空字符串 字符串可变性 字符串是值类型 使用字符 计算字符数量 连接字符串和字符 字符串插值 比较字符串 字符串大小写 Unicode String是例如"hello, world","海贼王"这样的有序的Character(字符)类型的值的集合,通过String类型来表示。 Swift 的String和Character类型提供了一个快速的,兼容 Unicod

  • 问题内容: 这是以前有关Java中的String初始化的一些问题的后续问题。 在用Java进行了一些小测试之后,我面临以下问题: 为什么我可以执行此语句 当str2一个String对象初始化为,但我不能调用方法toString()上str2?那么Java如何将空字符串对象和字符串文字串联起来? 顺便说一句,我还尝试将一个初始化为null和字符串文字的Integer连接起来,”a_literal_s

  • 对性能是否有影响? 不同Java版本的行为是否有差异?

  • 问题内容: 我试图理解字符串比较与字符串比较的输出。需要明确的是,我拥有使用==和equals比较两个字符串的类。我试图将==和equals()的输出合并为字符串。equals()的输出会连续显示,但==的输出不会 连续显示。使用Java的装箱功能,将与字符串连接的布尔值联系起来。equals和==都返回布尔值。那么为什么会有这种差异呢?有人可以解释吗? 输出 更新:答案 如果不使用s1 == s

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