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

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

在 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()

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

特别声明:[在 Java 中,除了常见的 System.out.print()] 该文观点仅代表作者本人,今日霍州系信息发布平台,霍州网仅提供信息存储空间服务。

猜你喜欢

宋美龄的麻花手镯有何魔力?她至死都不愿摘下,如今价值超过2亿(宋美龄的麻花翡翠手镯)

宋美龄不仅戴着翡翠耳环和戒指💍,最为抢眼的要数她的翡翠麻花手镯,这件饰品让她散发出浓烈的知性与优雅,同时又显得富贵华丽,令人难以用言语形容她的气质。翡翠麻花手镯与项链的故事 1936年,铁宝亭在市场…

宋美龄的麻花手镯有何魔力?她至死都不愿摘下,如今价值超过2亿(宋美龄的麻花翡翠手镯)

再看非诚勿扰,秦奋那句“将错就错”,道破当代爱情真相。(看非诚勿扰视频)

在汶川地震与北京奥运交织的特殊年份里,它为观众带来了一丝欢笑的喘息,却也精准地戳中了那个时代的情感脉搏。冯小刚巧妙地以“征婚”为切入点,将中年危机、物质婚恋等现实问题融入喜剧之中,恰好符合了观众在那个特殊年份…

再看非诚勿扰,秦奋那句“将错就错”,道破当代爱情真相。(看非诚勿扰视频)

海鲜捞汁:厨房里的味觉革命(正宗海鲜捞汁做法调汁)

捞汁作为一种创新调味方式,在家制作小海鲜已成为新潮流。这款酱汁不仅是美味秘籍,更是饮食文化的创新体现。本文将带你深入探究它的独特之处及其背后的文化意义。 它为何悄然进入千家万户?如何让普通食材绽放诱人风味?让我们一同探索这一烹饪潮流背后的秘

海鲜捞汁:厨房里的味觉革命(正宗海鲜捞汁做法调汁)

杨帆不忍了!公开回应身体状况,身患重病传闻真相大白(杨帆 女)

19岁的杨帆,走上了一条父母未曾预料的路。 也是在比赛中,他遇见了另一位重要的人——张蕾。七天后,他没有解释,只是发了一条看鲸鱼的视频,附文:“希望看到这条的人,幸运一年。” 他没站上春晚的C位,却用了2…

杨帆不忍了!公开回应身体状况,身患重病传闻真相大白(杨帆 女)

好家伙!『陈坤』又双叒叕被曝“秘密生子”了?这次还是俩!(陈好『陈坤』)

当时,这条消息与“『陈坤』和『周迅』秘密结婚”的传闻一同被炒得沸沸扬扬,迫使『陈坤』亲自出面澄清:第一,他没有和『周迅』结婚;第二,他没有二胎三胎,家中确实有亲戚孩子,但唯一的亲生子是陈尊佑。希望狗仔们以后能多提供确凿证据,…

好家伙!『陈坤』又双叒叕被曝“秘密生子”了?这次还是俩!(陈好『陈坤』)