为什么输出的是总和,而不是单个的换行的8行输出
public static void main(String[] args) {byte a =100;short b=12345;int c= 654321;long d =123456789;float e =1.5f;double f =123.456;boolean g =false;char h ='a';System.out.println(a+'\n'+b+'\n'+c+'\n'+d+'\n'+e+'\n'+f+'\n'+String.valueOf(g)+'\n'+h);}
- 对于
a + '\n'
,'\n'
是一个字符,其 ASCII 值为 10。所以a + '\n'
实际上是将byte
类型的a
的值和字符'\n'
的 ASCII 值相加,得到一个整数结果。后续的操作以此类推,会将不同类型的数据(如b
、c
等)不断与前面的结果相加,最终形成一个总和,而不是将它们作为单独的元素进行字符串拼接。
修改方案:
- 将
System.out.println()
中的内容修改为使用字符串拼接的方式,将每个变量都作为字符串的一部分,中间用"\n"
分隔,这样能确保每个变量都单独输出在新的一行。public class Main {public static void main(String[] args) {byte a = 100;short b = 12345;int c = 654321;long d = 123456789;float e = 1.5f;double f = 123.456;boolean g = false;char h = 'a';// 使用字符串拼接,将变量的值和换行符一起作为字符串输出System.out.println(a + "\n" + b + "\n" + c + "\n" + d + "\n" + e + "\n" + f + "\n" + g + "\n" + h);} }
public class Main {public static void main(String[] args) {byte a = 100;short b = 12345;int c = 654321;long d = 123456789;float e = 1.5f;double f = 123.456;boolean g = false;char h = 'a';// 使用 String.format 方法格式化输出字符串System.out.println(String.format("%d\n%d\n%d\n%d\n%f\n%f\n%s\n%c", a, b, c, d, e, f, g, h));} }
更简洁的代码,可以使用
String.format()
方法