以下语句,
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版本 依次调用