Java 补充 - System.out.println 方法打印彩色文本(通过 ANSI 转义序列方式)
一、引入
-
在 Java 中,
System.out.println
方法默认打印的是普通文本,无法直接打印彩色文本 -
可以通过 ANSI 转义序列在控制台中打印彩色文本
二、打印彩色文本
1、基本介绍
-
ANSI 转义序列是一种标准,用于控制终端的光标位置、颜色等
-
ANSI 转义序列以
\u001B
开头(\u001B
是 ESC 字符的 Unicode 编码),后面跟随控制代码
System.out.println("\u001B[【文本颜色代码】m【文本】\u001B[0m");
格式 | 说明 |
---|---|
\u001B[【颜色代码】m | 设置颜色 |
\u001B[0m | 重置颜色 |
- 除了设置文本颜色代码,还可以设置背景颜色代码
System.out.println("\u001B[【背景颜色代码】m【文本】\u001B[0m");
- 还可以同时设置文本颜色代码与背景颜色代码
System.out.println("\u001B[【文本颜色代码】;【背景颜色代码】m【文本】\u001B[0m");
- 注:打印完彩色文本后,一定要重置颜色(
\u001B[0m
),否则后续输出也会受到影响
2、常用颜色代码
颜色 | 文本颜色代码 | 背景颜色代码 |
---|---|---|
黑色 | 30 | 40 |
红色 | 31 | 41 |
绿色 | 32 | 42 |
黄色 | 33 | 43 |
蓝色 | 34 | 44 |
洋红色 | 35 | 45 |
青色 | 36 | 46 |
白色 | 37 | 47 |
3、演示
System.out.println("\u001B[31m红色文本\u001B[0m");
System.out.println("\u001B[32m绿色文本\u001B[0m");
System.out.println("\u001B[33m黄色文本\u001B[0m");
System.out.println("\u001B[34m蓝色文本\u001B[0m");
System.out.println("\u001B[41m红色背景\u001B[0m");
System.out.println("\u001B[42m绿色背景\u001B[0m");
System.out.println("\u001B[43m黄色背景\u001B[0m");
System.out.println("\u001B[44m蓝色背景\u001B[0m");
System.out.println("\u001B[31;42m红色文本,绿色背景\u001B[0m");
System.out.println("\u001B[33;44m黄色文本,蓝色背景\u001B[0m");
- 输出结果

三、封装工具类
- 为了方便使用,可以封装一个工具类来打印彩色文本
1、工具类
public class ColorLogger {
// 颜色代码
public static final String RESET = "\u001B[0m";
public static final String BLACK = "\u001B[30m";
public static final String RED = "\u001B[31m";
public static final String GREEN = "\u001B[32m";
public static final String YELLOW = "\u001B[33m";
public static final String BLUE = "\u001B[34m";
public static final String MAGENTA = "\u001B[35m";
public static final String CYAN = "\u001B[36m";
public static final String WHITE = "\u001B[37m";
// 打印彩色日志
public static void log(String color, String message) {
System.out.println(color + message + RESET);
}
}
2、测试
ColorLogger.log(ColorLogger.RED, "This is a red message");
ColorLogger.log(ColorLogger.GREEN, "This is a green message");
ColorLogger.log(ColorLogger.BLUE, "This is a blue message");
- 输出结果
