当我在 println 中添加“\n”时,变量发生了变化
Variable is changed when I add "\n" in println
我是一名新 Java 学生,正在努力理解以下代码输出 11.7 而不是 1.7 会发生什么错误。为什么我用char版的时候代码变了,为什么还专门加了一个1?
public class FloatVersusDouble {
public static void main(String[] args) {
// FLOAT VS DOUBLE
float num =1.7f;
System.out.println(num + '\n');
}
}
谢谢
Variable is changed when I add "\n" in println
您没有添加 "\n"
,您添加的是 '\n'
。前者是一个String
,后者是一个char
.
+
的含义取决于types of the operands:
- 当您将
+
与 float
和 String
一起使用时,您正在进行 字符串连接 ,因为至少有一个操作数是 String
;
- 当您将
+
与 float
和 char
一起使用时,您正在进行 数字加法 ,因为这两个操作数有数字类型。
对于数字加法,两个操作数进行 binary numeric promotion,使它们兼容加法。由于两个操作数中“最宽”的是 float
,因此 char
会升级为 float
。由于 \n
的代码点值为 10,因此浮点值为 10.f
。然后,将两个浮点数相加,得到 11.7f
,打印为 11.7
.
如果要打印 num
后跟换行符(后跟另一个换行符,因为您使用的是 System.out.println
),请将 '\n'
更改为 "\n"
。
在 java 中,原始类型 char
在与数字运算符组合时被视为数字。
你在用代码做什么
num + '\n'
相当于伪代码
num + valueAsIntegerOf('\n')
而\n
是ascii值10,所以你在做
num + 10
如果你想打印数字和两个新行(一个是通过 println 方法添加的,你可以用不同的方式来完成:
// First solution add a second println
System.out.println(num);
System.out.println();
// Second solution convert num to a string and add \n to that string
System.out.println(String.valueOf(num) + '\n');
// Same as the second solution but using the automatic conversion to
// string caused by "\n"
System.out.println(num + "\n");
最简单的方法是使用第三种解决方案。之所以可行,是因为您试图将运算符 + 数字和字符串结合起来。在这种情况下,数字更改为字符串,并与 \n
组合
我是一名新 Java 学生,正在努力理解以下代码输出 11.7 而不是 1.7 会发生什么错误。为什么我用char版的时候代码变了,为什么还专门加了一个1?
public class FloatVersusDouble {
public static void main(String[] args) {
// FLOAT VS DOUBLE
float num =1.7f;
System.out.println(num + '\n');
}
}
谢谢
Variable is changed when I add "\n" in println
您没有添加 "\n"
,您添加的是 '\n'
。前者是一个String
,后者是一个char
.
+
的含义取决于types of the operands:
- 当您将
+
与float
和String
一起使用时,您正在进行 字符串连接 ,因为至少有一个操作数是String
; - 当您将
+
与float
和char
一起使用时,您正在进行 数字加法 ,因为这两个操作数有数字类型。
对于数字加法,两个操作数进行 binary numeric promotion,使它们兼容加法。由于两个操作数中“最宽”的是 float
,因此 char
会升级为 float
。由于 \n
的代码点值为 10,因此浮点值为 10.f
。然后,将两个浮点数相加,得到 11.7f
,打印为 11.7
.
如果要打印 num
后跟换行符(后跟另一个换行符,因为您使用的是 System.out.println
),请将 '\n'
更改为 "\n"
。
在 java 中,原始类型 char
在与数字运算符组合时被视为数字。
你在用代码做什么
num + '\n'
相当于伪代码
num + valueAsIntegerOf('\n')
而\n
是ascii值10,所以你在做
num + 10
如果你想打印数字和两个新行(一个是通过 println 方法添加的,你可以用不同的方式来完成:
// First solution add a second println
System.out.println(num);
System.out.println();
// Second solution convert num to a string and add \n to that string
System.out.println(String.valueOf(num) + '\n');
// Same as the second solution but using the automatic conversion to
// string caused by "\n"
System.out.println(num + "\n");
最简单的方法是使用第三种解决方案。之所以可行,是因为您试图将运算符 + 数字和字符串结合起来。在这种情况下,数字更改为字符串,并与 \n
组合