本文目录导读:

在Java中打印输出是最基础的操作,下面从基础语法到高级进阶,给你梳理几个典型的打印案例,涵盖控制台输出、格式化打印、以及打印图案等场景。
基础打印(入门)
换行与不换行
public class BasicPrint {
public static void main(String[] args) {
// 不换行打印
System.out.print("Hello ");
System.out.print("World");
System.out.println("!"); // 换行
// 直接换行
System.out.println("第一行");
System.out.println("第二行");
// 转义字符
System.out.println("包含\t制表符");
System.out.println("包含\n换行");
System.out.println("包含\"引号\"");
// 在中间打印
System.out.println("换行前\r回车覆盖开头的部分");
}
}
格式化打印(进阶)
System.out.printf() 格式化输出
public class FormatPrint {
public static void main(String[] args) {
String name = "张三";
int age = 25;
double score = 95.5678;
// %s 字符串、%d 整数、%.2f 保留两位小数的浮点数
System.out.printf("姓名:%s,年龄:%d岁,成绩:%.2f分%n", name, age, score);
// 左对齐(默认右对齐)
System.out.printf("左对齐:%-10s|%n", "Java");
System.out.printf("右对齐:%10s|%n", "Java");
// 数字补0
System.out.printf("补零:%05d%n", 42); // 输出 00042
// 百分比
System.out.printf("百分比:%.1f%%%n", 98.6); // 输出 98.6%
// 十六进制
System.out.printf("十六进制:%x%n", 255); // 输出 ff
}
}
String.format() 格式化字符串
public class StringFormat {
public static void main(String[] args) {
// 返回格式化后的字符串(不直接输出)
String formatted = String.format("%s学了%d天Java", "小李", 30);
System.out.println(formatted);
// 复杂表格对齐
System.out.println("======================");
System.out.printf("%-10s %-8s %s%n", "产品", "数量", "单价");
System.out.println("----------------------");
System.out.printf("%-10s %-8d %.2f%n", "笔记本", 10, 5999.99);
System.out.printf("%-10s %-8d %.2f%n", "鼠标", 50, 129.5);
}
}
打印图案(趣味案例)
直角三角形
public class Triangle {
public static void main(String[] args) {
int rows = 5;
// 打印直角三角形
for (int i = 1; i <= rows; i++) {
for (int j = 1; j <= i; j++) {
System.out.print("* ");
}
System.out.println();
}
System.out.println("------------");
// 打印倒三角形
for (int i = rows; i >= 1; i--) {
for (int j = 1; j <= i; j++) {
System.out.print("* ");
}
System.out.println();
}
}
}
金字塔和菱形
public class Diamond {
public static void main(String[] args) {
int n = 5; // 层数
// 正金字塔
for (int i = 0; i < n; i++) {
// 空格
for (int j = 0; j < n - i - 1; j++) {
System.out.print(" ");
}
// 星号
for (int k = 0; k < 2 * i + 1; k++) {
System.out.print("*");
}
System.out.println();
}
System.out.println("------------");
// 菱形(包含上下两部分)
for (int i = 0; i < n; i++) {
for (int j = 0; j < n - i - 1; j++) {
System.out.print(" ");
}
for (int k = 0; k < 2 * i + 1; k++) {
System.out.print("*");
}
System.out.println();
}
for (int i = n - 2; i >= 0; i--) {
for (int j = 0; j < n - i - 1; j++) {
System.out.print(" ");
}
for (int k = 0; k < 2 * i + 1; k++) {
System.out.print("*");
}
System.out.println();
}
}
}
九九乘法表
public class MultiplicationTable {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.printf("%d×%d=%2d ", j, i, i * j);
}
System.out.println();
}
}
}
输出效果:
1×1= 1
1×2= 2 2×2= 4
1×3= 3 2×3= 6 3×3= 9
...
ASCII艺术(打印文字/图案)
实例:打印爱心
public class Heart {
public static void main(String[] args) {
int n = 4; // 控制大小
// 上半部分
for (int i = n / 2; i <= n; i += 2) {
for (int j = 1; j < n - i; j += 2) {
System.out.print(" ");
}
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
for (int j = 1; j <= n - i; j++) {
System.out.print(" ");
}
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
// 下半部分(倒三角形)
for (int i = n; i >= 1; i--) {
for (int j = i; j < n; j++) {
System.out.print(" ");
}
for (int j = 1; j <= (i * 2) - 1; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
调试与日志打印(实际开发)
使用 System.err 打印错误信息
public class ErrorPrint {
public static void main(String[] args) {
// 在控制台用红色输出错误信息
System.err.println("警告:输入的数字不合法!");
// 异步记录堆栈
try {
int result = 10 / 0;
} catch (ArithmeticException e) {
// 打印完整的异常堆栈(调试时用)
e.printStackTrace();
}
}
}
打印数组和对象(工具方法)
import java.util.Arrays;
public class ArrayPrint {
public static void main(String[] args) {
// 使用Arrays.toString()打印数组
int[] arr = {1, 2, 3, 4, 5};
System.out.println(Arrays.toString(arr)); // [1, 2, 3, 4, 5]
// 使用Arrays.deepToString()打印二维数组
int[][] matrix = {{1, 2}, {3, 4}};
System.out.println(Arrays.deepToString(matrix)); // [[1, 2], [3, 4]]
// 打印对象
Person p = new Person("Alice", 30);
System.out.println(p); // 调用重写的toString()方法
}
}
class Person {
private String name;
private int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
// 重写toString(),让打印更友好
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + "}";
}
}
彩色打印(控制台颜色)
public class ColorPrint {
// ANSI 颜色代码
public static final String RESET = "\u001B[0m";
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 PURPLE = "\u001B[35m";
public static void main(String[] args) {
System.out.println(RED + "这是红色" + RESET);
System.out.println(GREEN + "这是绿色" + RESET);
System.out.println(YELLOW + "这是黄色" + RESET);
System.out.println(BLUE + "这是蓝色" + RESET);
System.out.println(PURPLE + "这是紫色" + RESET);
}
}
注意: 彩色打印在IDEA或VS Code的终端中支持,但在Windows CMD中可能显示乱码。
综合实战:模拟登录进度条
public class LoadingBar {
public static void main(String[] args) throws InterruptedException {
System.out.println("系统登录中...");
for (int i = 0; i <= 100; i += 10) {
System.out.print("\r加载进度: " + i + "% "); // \r回到行首
// 画进度条
for (int j = 0; j < i / 5; j++) {
System.out.print("█");
}
for (int j = 0; j < 20 - i / 5; j++) {
System.out.print("░");
}
Thread.sleep(500); // 延迟0.5秒
}
System.out.println("\n登录成功!");
}
}
| 场景 | 使用方法 | 代码示例 |
|---|---|---|
| 简单输出 | System.out.println() |
System.out.println("Hello"); |
| 不换行 | System.out.print() |
System.out.print("Hi"); |
| 格式化 | System.out.printf() |
System.out.printf("%.2f", 3.14159); |
| 错误输出 | System.err.println() |
System.err.println("Error!"); |
| 数组打印 | Arrays.toString() |
System.out.println(Arrays.toString(arr)); |
如果你有特定的打印需求(比如打印表格、打印特殊图形),随时告诉我,我可以帮你写对应的代码!