gpt4 book ai didi

java - 为什么我可以将 int 数据类型中的十进制数字添加到字符串中,而无需进行数据类型转换

转载 作者:行者123 更新时间:2023-11-30 02:20:28 27 4
gpt4 key购买 nike

我是一名新程序员,试图理解这段 Java 代码为何有效。我不在类里面,这也不是家庭作业。

该练习要求用户输入一个十进制数,并要求程序将该数字转换为十进制数。按照教科书中稍微不同的程序示例,这是我编写的代码。它有效,但我不明白为什么。

while (decimalNumber != 0) {

binaryNumber = decimalNumber % 2 + binaryNumber;
decimalNumber = decimalNumber / 2;

}
System.out.println("The decimal number " + decimalNumber +
" in binary is: " + binaryNumber);

变量binaryNumber的类型为String,变量decimalNumber的类型为int。为什么我可以将 int 添加到 String 而无需某种显式/正式转换?

这是我的第一个问题,所以请原谅我犯下的任何失礼!

最佳答案

执行了隐式转换。这恰好是 Java Language Specification, §15.18.1 中定义 + 运算符的特殊情况。 :

15.18.1. String Concatenation Operator +

If only one operand expression is of type String, then string conversion (§5.1.11) is performed on the other operand to produce a string at run time.

The result of string concatenation is a reference to a String object that is the concatenation of the two operand strings. The characters of the left-hand operand precede the characters of the right-hand operand in the newly created string.

The String object is newly created (§12.5) unless the expression is a constant expression (§15.28).

当然,Java编译器/运行时可以以任何方式优化它,使最终结果相同(例如,使用 StringBuilders 进行多个串联,或在同一步骤中转换+串联以避免创建短暂的 String 实例)

关于java - 为什么我可以将 int 数据类型中的十进制数字添加到字符串中,而无需进行数据类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47002137/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com