Java面向对象编程:如何不叠加值打印多个值?是否需单独输出语句?
你说得完全没错——如果用+把多个方法的返回值拼在一起放进System.out.println,Java会把它们做字符串拼接或数值相加,而不是分别输出每个方法的原始返回值,尤其是布尔值参与运算时,很容易出现和预期不符的结果(比如true + 10会变成字符串"true10",而不是分别打印true和10)。
至于要不要为每个值单独写System.out.println?其实不一定,这里给你几个可选方案:
最直观的方案:单独打印每个返回值
如果方法数量不多,这种写法最清晰,也最容易维护:System.out.println(method1()); System.out.println(method2()); System.out.println(method3());每个返回值单独占一行,出问题时一眼就能定位到哪个方法的返回值有问题。
同一行打印多个值:用
System.out.print配合分隔符
要是想把多个返回值打在同一行,用print代替println,手动加分隔符(比如空格、逗号),最后用println收尾换行:System.out.print(method1() + ", "); System.out.print(method2() + ", "); System.out.println(method3()); // 最后一个值后换行格式化输出:用
System.out.printf
这种方式能精准控制每个返回值的展示格式,还能加说明文字,可读性拉满:// 假设method1返回布尔值,method2返回整数,method3返回字符串 System.out.printf("方法1返回结果:%b%n方法2返回结果:%d%n方法3返回结果:%s%n", method1(), method2(), method3());这里
%b对应布尔值、%d对应整数、%s对应字符串,%n是跨平台的换行符,输出会整齐又清晰。Java 11+ 专属:用
String.join批量拼接
如果你的项目用的是Java 11及以上版本,可以把所有返回值转成字符串后,用String.join指定分隔符拼接再打印:System.out.println(String.join("\n", String.valueOf(method1()), String.valueOf(method2()), String.valueOf(method3())));上面的代码会把每个返回值用换行符分隔,和单独写
println的效果一样,但代码更紧凑。
总的来说,要是方法数量少,优先选单独打印的方式;如果需要更灵活的格式,就用printf或者String.join。
内容的提问来源于stack exchange,提问作者Michael K.

