在Java中打印输出通常使用System.out.println()方法,括号内放入字符串、变量或表达式,System.
out.println(“Hello World”); 会输出并换行,若无需换行,可用System.out.print(),支持格式化输出如printf()。
基础打印方法
Java通过System类的out对象提供三种核心打印方法:
System.out.println()
功能后自动换行
适用场景:需换行的输出
System.out.println("Hello, World!"); // 输出后换行
System.out.println(100); // 打印数字
System.out.println(3.14); // 打印浮点数
输出:
Hello, World!
100
3.14
System.out.print()
功能不换行
适用场景:连续输出(如拼接字符串)
System.out.print("Java");
System.out.print(" Programming");
// 输出:Java Programming
System.out.printf()
功能:格式化输出(类似C语言printf)
语法:System.out.printf("格式字符串", 参数);
常用占位符:

%s:字符串%d:整数%f:浮点数(可控制小数位,如%.2f)%n:换行符
示例:
String name = "Alice";
int age = 30;
double salary = 85000.50;
System.out.printf("Name: %s, Age: %d, Salary: %.2f %n", name, age, salary);
输出:
Name: Alice, Age: 30, Salary: 85000.50
高级输出方式
使用 String.format() 生成格式化字符串
String info = String.format("Date: %tF %nTime: %tT", new Date(), new Date());
System.out.print(info);
输出(示例):
Date: 2025-10-05
Time: 14:30:45
日志工具(推荐生产环境使用)
通过java.util.logging或Log4j/SLF4J等框架记录日志,更灵活且可控:

import java.util.logging.Logger;
public class Demo {
private static final Logger logger = Logger.getLogger(Demo.class.getName());
public static void main(String[] args) {
logger.info("Application started"); // 输出到控制台或文件
logger.warning("Low memory detected");
}
}
写入文件(替代控制台输出)
try (PrintWriter writer = new PrintWriter("output.txt")) {
writer.println("This is written to a file.");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
特殊打印场景
打印数组内容
使用Arrays.toString()避免输出对象地址:
int[] numbers = {1, 2, 3};
System.out.println(Arrays.toString(numbers)); // 输出:[1, 2, 3]
打印对象信息
重写toString()方法自定义输出:
class Person {
String name;
int age;
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + "}";
}
}
Person p = new Person();
p.name = "Bob";
System.out.println(p); // 输出:Person{name='Bob', age=0}
选择最佳打印方式的建议
| 场景 | 推荐方法 | 原因 |
|---|---|---|
| 调试/简单输出 | System.out.println() |
简单快捷 |
| 格式化输出(数字/日期) | System.out.printf() |
精确控制格式 |
| 生产环境日志记录 | Logger(如SLF4J) | 支持分级、文件存储和过滤 |
| 生成复杂字符串 | String.format() |
返回字符串,便于复用 |
| 输出到文件 | PrintWriter |
持久化存储 |
常见错误与规避
-
拼接性能问题
避免循环中使用拼接字符串:
低效:for (int i=0; i<1000; i++) { s += i; }
高效:使用StringBuilder
-
未关闭资源
使用PrintWriter等资源后务必关闭:try (PrintWriter w = new PrintWriter("file.txt")) { ... } // 自动关闭 -
日志级别混淆
生产环境避免使用System.out,改用Logger并设置级别(如INFO、ERROR)。
引用说明: 基于Oracle官方Java文档,参考《Java核心技术卷I》(Cay S. Horstmann著)及Java SE 17规范,日志实现部分遵循SLF4J官方最佳实践,文件操作符合Java NIO标准库设计。
