为什么 println(measure + '"'); 和 println(measure + '\"');添加到度量中,同时使用单独的语句打印正确?

Why do println(measure + '"'); and println(measure + '\"'); add to measure, while using seperate statements prints correctly?

为了在Java中测试自己,我编写了一个程序,我需要在其中显示double[] measurements的内容,包含:{8.0, 7.7474, 7.4949, 7.7474, 8.0, 7.7474, 7.4949 , 7.7474, 8.0}。一个简单的增强 for 循环和一个 println() 似乎工作正常,但是

for(double measure: measurements)
{
   System.out.println(measure + '"');
}

打印出 42、41.7474、41.4949 等。正好比 measure 的值多 34。将代码更改为

for(double measure: measurements)
{
    System.out.println(measure + '\"');
}

打印出 18、17.7474、17.4949 等。比正确值正好多 10。只有当 println 语句被分成两行时才能正确打印:

System.out.print(measure);
System.out.println("\"");

为什么前两个例子加到measure的值上?我对编程还很陌生,但在我看来它们都可以工作,因为 Java 同时使用撇号和引号来声明一个字符串。为什么将其拆分为两个语句可以正常工作,同时将这两个语句添加到 measure 的值中?谢谢!

这是因为您正在打印表达式 measure + '"' 的结果。目前,您正在执行 doublechar 之间的加法运算。如果您改为使用 " 而不是 ',它将起作用。

像这样:System.out.println(measure + "\"");

另一种选择是先将measure转换为字符串。这很少是最好的选择,但这里的要点是您需要知道操作数的类型以及操作的结果类型。 doublechar 相加会得到 doubledouble(或 intchar 等)和 String 之间的加法将导致 String.

撇号用于声明 char 而不是 String 请记住这一点。单引号内的字符不能超过一个。

就这样measure + "\""