Java:为什么我的书开始将字符串变量与空字符串连接在一起,特别是使用 System.out.print()?

Java: Why does my book start concatenating string vars with concatenation with an empty string, specifically using System.out.print()?

在阅读学校为 Java 分配的书籍时,我一直看到字符串连接以空字符串开头。 具体来说,我只在 System.out.print*() 语句(其中 * 是“”或"ln")中连接字符串变量时才看到它。 我试过寻找原因无济于事;我怀疑我的措辞有问题。

我书中的一个例子是:System.out.println("" + stringVar + anotherStringVar);

在本书接近尾声时,我发现了以下内容:

To ensure printing of characters, start your print statement as: System.out.println("" + ...

在我的书的另一部分中,我发现 System.out.print(num1 + " + " + num2 + " is " + (num1 + num2)); 似乎违反了它自己的规则。

为什么我的书推荐这样做?为什么它有时似乎忽略了这条规则?

您的书试图避免决定 + 何时表示串联以及何时表示加法的复杂规则有点过火。作为练习,比较以下输出:

System.out.println(1 + 2);
System.out.println("" + 1 + 2);

编辑: 刚刚注意到关于确保 "printing of characters" 的引述。这是否是指 char 数据类型?这是一个特别需要注意的令人困惑的场景,因为 char 实际上是一种数字数据类型。看看在上面的例子中用 'a' 和 'b' 替换 1 和 2 会发生什么。