在 Java 中,除了常见的 System.out.print()

2025-04-24ASPCMS社区 - fjmyhfvclm

在 Java 中,除了常见的 System.out.print()、System.out.println() 和 System.out.printf() 方法,还有许多其他输出方式。以下是一些额外的输出代码示例,涵盖不同场景和需求:

1. 使用 System.console() 输出

System.console() 提供了与控制台交互的能力,可以用于读取和输出信息(注意:在某些 IDE 中可能不可用,通常在命令行运行有效)。

java

public class Main {

public static void main(String[] args) {

java.io.Console console = System.console();

if (console != null) {

console.printf("Hello, %s!\n", "World");

} else {

System.out.println("Console is not available.");

}

}

}

2. 使用 StringBuilder 或 StringBuffer 拼接后输出

当需要动态拼接大量字符串时,StringBuilder 或 StringBuffer 是更高效的选择。

java

public class Main {

public static void main(String[] args) {

StringBuilder sb = new StringBuilder();

sb.append("Hello").append(", ").append("World").append("!");

System.out.println(sb.toString());

}

}

3. 使用 Object.toString() 方法输出对象信息

所有 Java 对象都继承自 Object 类,可以通过重写 toString() 方法自定义对象的输出。

java

class Person {

String name;

int age;

Person(String name, int age) {

this.name = name;

this.age = age;

}

@Override

public String toString() {

return "Person{name='" + name + "', age=" + age + "}";

}

}

public class Main {

public static void main(String[] args) {

Person person = new Person("Alice", 25);

System.out.println(person); // 自动调用 toString()

}

}

4. 使用 Arrays.toString() 输出一维数组

Arrays.toString() 是输出一维数组的便捷方法。

java

import java.util.Arrays;

public class Main {

public static void main(String[] args) {

int[] numbers = {1, 2, 3, 4, 5};

System.out.println(Arrays.toString(numbers)); // 输出: [1, 2, 3, 4, 5]

}

}

5. 使用 System.lineSeparator() 跨平台换行

System.lineSeparator() 返回当前操作系统的换行符,确保代码在不同平台上都能正确换行。

java

public class Main {

public static void main(String[] args) {

String line1 = "Hello" + System.lineSeparator() + "World!";

System.out.println(line1);

}

}

6. 使用 PrintStream 输出到其他流

System.out 是 PrintStream 的一个实例,可以创建自己的 PrintStream 输出到其他地方。

java

import java.io.ByteArrayOutputStream;

import java.io.PrintStream;

public class Main {

public static void main(String[] args) throws Exception {

ByteArrayOutputStream baos = new ByteArrayOutputStream();

PrintStream ps = new PrintStream(baos);

ps.println("This is written to a byte array.");

ps.close();

System.out.println(baos.toString()); // 输出: This is written to a byte array.

}

}

7. 使用 java.util.Formatter 格式化输出

Formatter 类提供了更底层的格式化功能,类似于 printf。

java

import java.util.Formatter;

public class Main {

public static void main(String[] args) {

StringBuilder sb = new StringBuilder();

try (Formatter formatter = new Formatter(sb)) {

formatter.format("Name: %s, Age: %d", "Charlie", 40);

}

System.out.println(sb.toString()); // 输出: Name: Charlie, Age: 40

}

}

8. 使用 Stream 和 Collectors.joining() 输出集合

在 Java 8 中,可以使用流(Stream)和 Collectors.joining() 方法输出集合内容。

java

import java.util.Arrays;

import java.util.List;

import java.util.stream.Collectors;

public class Main {

public static void main(String[] args) {

List<String> names = Arrays.asList("Alice", "Bob", "Charlie");

String result = names.stream().collect(Collectors.joining(", "));

System.out.println(result); // 输出: Alice, Bob, Charlie

}

}

9. 使用 JOptionPane 弹出对话框输出

在桌面应用程序中,可以使用 JOptionPane 弹出对话框显示信息。

java

import javax.swing.JOptionPane;

public class Main {

public static void main(String[] args) {

JOptionPane.showMessageDialog(null, "This is a dialog output!");

}

}

10. 使用 Thread.dumpStack() 输出堆栈跟踪

Thread.dumpStack() 可以输出当前线程的堆栈跟踪信息,用于调试。

java

public class Main {

public static void main(String[] args) {

System.out.println("Before dumpStack");

Thread.dumpStack();

System.out.println("After dumpStack");

}

}

11. 使用 ProcessBuilder 捕获子进程输出

通过 ProcessBuilder 启动外部进程,并捕获其输出。

java

import java.io.BufferedReader;

import java.io.InputStreamReader;

public class Main {

public static void main(String[] args) throws Exception {

ProcessBuilder pb = new ProcessBuilder("echo", "Hello from subprocess!");

Process process = pb.start();

try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()))) {

String line;

while ((line = reader.readLine()) != null) {

System.out.println(line);

}

}

}

}

12. 使用 System.nanoTime() 或 System.currentTimeMillis() 输出时间

可以输出时间戳或计算代码执行时间。

java

public class Main {

public static void main(String[] args) {

long start = System.nanoTime();

// 模拟一些操作

try { Thread.sleep(500); } catch (InterruptedException e) {}

long end = System.nanoTime();

System.out.println("Execution time: " + (end - start) + " ns");

}

}

总结

简单输出:System.out.print()、System.out.println()

格式化输出:String.format()、System.out.printf()、Formatter

数组和集合输出:Arrays.toString()、Arrays.deepToString()、Collectors.joining()

日志和错误输出:System.err、日志框架(如 Log4j、SLF4J)

文件和流输出:FileWriter、PrintWriter、PrintStream

GUI 输出:JOptionPane、Swing、JavaFX

调试输出:Thread.dumpStack()、System.console()

根据具体需求选择合适的输出方式,既能满足简单输出,也能应对复杂场景。

全部评论