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

Java 为什么println(测量+;';';);和println(measure+;';\';);添加到测量,同时使用单独的语句正确打印?,java,double-quotes,apostrophe,Java,Double Quotes,Apostrophe,为了用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等,比me

为了用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+'''
的结果。此时,您正在执行
双精度
字符
之间的加法。如果您改为使用
而不是
,它将起作用

如下所示:
System.out.println(measure+“\”);


另一种选择是首先将
度量值
转换为字符串。这很少是最好的选择,但这里的要点是,您需要知道操作数的类型以及操作的结果类型。在
双精度
字符
之间进行加法将导致
双精度
。加法是一个
double
(或
int
char
等)和一个
String
之间会产生一个
String
撇号用于声明
char
而不是
String
请记住。单引号内不能有多个字符


Just do
measure+“\”

char
在算术中被视为无符号的短字符。Java使用撇号和引号来声明字符串-这不是真的。Java使用撇号和引号来声明字符串。“不。@CollinD Java使用单引号
来表示
char
值。单引号内不能有多个字符。@killjoy我同意!或者你可以写
measure+“\”
。我明白了。我只是假设Java使用撇号的方式与Python相同,我不知道
char
s可以添加到double中。