在 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()] 该文观点仅代表作者本人,今日霍州系信息发布平台,霍州网仅提供信息存储空间服务。

猜你喜欢

On Labs 东京首秀,LightSpray 9月17日上海『限量发售』(东京首次亮相运动)

今年九月,On昂跑以三大东京里程碑事件开启全新篇章:首度在亚太地区呈现沉浸式体验空间东京On Labs及LightSpray™鞋面科技;全新On昂跑银座旗舰店开业;63名On昂跑赞助运动员齐聚日本2025世界…

On Labs 东京首秀,LightSpray 9月17日上海『限量发售』(东京首次亮相运动)

赋能新生,重塑未来:鸿视美达出监教育系统综合解决方案(赋能新机遇)

怀揣“科技赋能司法,智慧引领新生”的企业使命,鸿视美达深度聚焦出监教育场景,集多年行业洞察与技术积累,倾力打造出国内首套集“教、学、管、评、联” 于一体的全方位、智能化出监教育综合解决方案。鸿视美达愿以尖端…

赋能新生,重塑未来:鸿视美达出监教育系统综合解决方案(赋能新机遇)

男子务农砸伤脚趾 小伤忽视酿成危机 忽视小伤口险丧命(农民工脚被砸断)

家住长沙县的51岁农民李德良近期在务农时被锄头砸伤,由于未进行规范处理伤口,随后感染破伤风被送进医院急救。经过20余天的救治,他终于转危为安

男子务农砸伤脚趾 小伤忽视酿成危机 忽视小伤口险丧命(农民工脚被砸断)

【智造世界·创造美好】安徽省35家企业入选 2025年国家5G工厂(ll智造)

(来源:安徽新闻网) 转自:安徽新闻网2023年以来,我省共80家企业入选国家5G工厂名录,数量居全国第5位。通过“5G+工业『互联网』”集成12类业务系统,实时采集数万设备数据,设备联网率达99.9%,产能利用…

【智造世界·创造美好】安徽省35家企业入选 2025年国家5G工厂(ll智造)

丽都环氧树脂胶怎么用?无色透明滴胶真能“一秒粘合”吗?(环氧树脂胶粘剂914)

想做手工、修复物品或DIY饰品?丽都环氧树脂胶凭借无色透明、超强粘接和环保耐腐蚀特性,成为热门选择。本文详解其原理、使用技巧、适用场景与选购建议,帮你避开“气泡多”“固化慢”等常见坑点。从家庭小修到手作创作,一文看懂如何选对胶、用对胶,让作

丽都环氧树脂胶怎么用?无色透明滴胶真能“一秒粘合”吗?(环氧树脂胶粘剂914)