杰瑞科技汇

Java控制台输出如何实现?

核心方法

Java 的标准输出流是 System.out,它是一个 PrintStream 类型的对象,我们主要通过它来向控制台打印信息,以下是几个最核心的方法:

Java控制台输出如何实现?-图1
(图片来源网络,侵删)
方法 描述 示例
System.out.println() 最常用,并在末尾换行 System.out.println("Hello, World!");
System.out.print() 末尾不换行,下次打印会紧接其后。 System.out.print("Hello, "); System.out.println("World!");
System.out.printf() 格式化输出,类似于 C 语言中的 printf,可以根据指定的格式字符串来输出变量。 System.out.printf("我的名字是 %s,今年 %d 岁。", "张三", 25);
System.out.write() 写入单个字节,不常用,因为比较底层。 System.out.write(65); // 会输出字符 'A'

System.out.println() - 最基础、最常用

这是每个 Java 学习者接触的第一个方法,它会将你给的内容打印到控制台,并自动将光标移动到下一行。

示例代码:

public class PrintlnExample {
    public static void main(String[] args) {
        System.out.println("这是第一行输出。");
        System.out.println("这是第二行输出。");
        int age = 30;
        String name = "李四";
        // 可以直接打印变量
        System.out.println(name);
        System.out.println(age);
        // 也可以打印表达式的结果
        System.out.println("明年" + name + "的年龄是 " + (age + 1));
    }
}

输出结果:

这是第一行输出。
这是第二行输出。
李四
30
明年李四的年龄是 31

System.out.print() - 不换行打印

当你想在同一行打印多个内容时,这个方法就非常有用。

Java控制台输出如何实现?-图2
(图片来源网络,侵删)

示例代码:

public class PrintExample {
    public static void main(String[] args) {
        System.out.print("请输入你的名字: ");
        // 这里的 print 不会换行,用户输入会跟在 "名字: " 后面
        // System.out.print("张三\n"); // 如果想换行,可以手动加 \n
        System.out.print(",你好!\n"); // \n 是换行符
        for (int i = 1; i <= 5; i++) {
            System.out.print(i + " "); // 在同一行打印数字,用空格隔开
        }
    }
}

输出结果:

请输入你的名字: ,你好!
1 2 3 4 5 

(注意:System.out.print("请输入你的名字: "); 这行代码在运行时,光标会停在 后面,等待用户输入。)


System.out.printf() - 格式化输出

当你需要将变量嵌入到字符串中,并且希望对格式有精确控制时(保留两位小数、设置宽度等),printf 是最佳选择。

Java控制台输出如何实现?-图3
(图片来源网络,侵删)

格式说明符:

格式说明符 数据类型 示例
%d 十进制整数 int, long
%f 浮点数 float, double
%s 字符串 String, char[]
%c 字符 char
%b 布尔值 boolean
%n 平台无关的换行符 (推荐使用,比 \n 更通用)
%.2f 保留两位小数的浮点数
%5d 宽度为5的整数(右对齐)
%-5d 宽度为5的整数(左对齐)

示例代码:

public class PrintfExample {
    public static void main(String[] args) {
        String name = "王五";
        int score = 95;
        double price = 19.9956;
        boolean isPassed = true;
        // 基本用法
        System.out.printf("学生姓名: %s, 分数: %d\n", name, score);
        // 格式化浮点数,保留两位小数
        System.out.printf("商品价格: ¥%.2f\n", price); // 输出 19.99 (注意四舍五入)
        // 设置宽度和对齐方式
        System.out.printf("|%10d|\n", 123);    // 右对齐,宽度为10
        System.out.printf("|%-10d|\n", 123);   // 左对齐,宽度为10
        // 使用 %n 作为换行符,跨平台兼容
        System.out.printf("你好,%s!%n", name);
        System.out.printf("考试通过: %b\n", isPassed);
    }
}

输出结果:

学生姓名: 王五, 分数: 95
商品价格: ¥19.99
|       123|
|123       |
你好,王五!
考试通过: true

System.err - 标准错误输出

除了 System.out,Java 还提供了 System.err,它也是一个 PrintStream,用于输出错误信息,默认情况下,System.err 的输出和 System.out 一样都指向控制台,但很多 IDE 和终端会将它们用不同的颜色区分开(System.err 是红色),这有助于快速识别错误信息。

示例代码:

public class ErrorExample {
    public static void main(String[] args) {
        System.out.println("这是一条普通信息。");
        System.err.println("这是一条错误信息!程序可能出问题了。");
        System.out.println("这是一条后续的普通信息。");
    }
}

在 IntelliJ IDEA 中的输出示例: (普通信息是黑色,错误信息是红色)


总结与最佳实践

  1. 日常调试和简单输出:使用 System.out.println(),简单直接,一目了然。
  2. 在同一行打印多个内容:使用 System.out.print(),并在需要时手动添加 \n 或使用 System.out.println() 来换行。
  3. 格式化输出:当需要复杂的格式控制,如货币、日期、对齐等时,务必使用 System.out.printf(),它能让你的输出更专业、更易读。
  4. 输出错误信息:区分使用 System.outSystem.errSystem.out 用于常规信息,System.err 用于错误和异常信息,便于日志管理和问题排查。
  5. 日志框架:对于大型项目,System.out.println 并不是最佳选择,因为它难以控制级别(如只打印错误信息)、难以重定向到文件,在生产环境中,通常会使用专业的日志框架,如 SLF4J + LogbackLog4j2,这些框架提供了更强大的功能,如日志级别、日志文件滚动、异步日志等,但在学习和小型项目中,System.out.println 完全够用。
分享:
扫描分享到社交APP
上一篇
下一篇