System.out.println()

在Java中,控制台输出最常用的方式是通过System.out对象调用相关方法。System是Java的核心类,out是其静态属性,类型为PrintStream,提供了多种输出方法,其中最基础的是println(),该方法会将参数输出到控制台,并在末尾自动添加换行符。
System.out.println("Hello, Java!"); // 输出字符串并换行
System.out.println(2023); // 输出整数并换行
System.out.println(3.14); // 输出浮点数并换行
与println()不同,print()方法输出内容后不会换行,适合连续输出多个内容。
System.out.print("Java");
System.out.print(" is ");
System.out.println("fun!"); // 输出"Java is fun!",仅在最后换行
System.out.println()在不传参数时,会输出一个空行,常用于分隔输出内容,提升可读性。
多场景输出:数据类型的处理
Java的控制台输出支持多种数据类型,基本数据类型(如int、double、boolean)和引用类型(如字符串、对象)均可直接输出,对于基本类型,System.out会自动调用其toString()方法转换为字符串;对于引用类型,若未重写toString()方法,则默认输出对象的内存地址(如com.example.ClassName@1a2b3c4d)。
以自定义类为例,若希望输出对象时显示有意义的信息,需重写toString()方法:

class Person {
private String name;
private int age;
public 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 p = new Person("Alice", 25);
System.out.println(p); // 输出:Person{name='Alice', age=25}
}
}
对于数组,直接输出会得到地址值,需借助Arrays.toString()方法(需导入java.util.Arrays):
int[] nums = {1, 2, 3};
System.out.println(Arrays.toString(nums)); // 输出:[1, 2, 3]
格式化输出:printf的灵活运用
当需要控制输出格式(如保留小数位数、对齐方式、日期格式等)时,printf()方法是更高效的选择。printf()通过格式说明符(以开头)指定输出格式,后接对应的参数,常用格式说明符包括:
%d:整数(int、long等)%f:浮点数(float、double),默认保留6位小数%s:字符串%c:字符%b:布尔值
输出带格式的数字:
int score = 95;
double price = 99.99;
System.out.printf("Score: %d, Price: %.2f%n", score, price); // 输出:Score: 95, Price: 99.99
%.2f表示保留2位小数,%n是平台无关的换行符(比\n更推荐),可通过标志位调整格式:
- 左对齐(默认右对齐)
0:补零(如%05d输出数字5时为00005)- 显示正负号(如
%+d输出5为+5)
示例:

System.out.printf("%-10s | %05d%n", "ID", 123); // 输出:ID | 00123
进阶技巧:控制台输出的优化与异常处理
在实际开发中,控制台输出可能面临性能优化或异常处理问题,频繁调用System.out.println()可能影响性能(尤其在循环中),可通过StringBuilder后一次性输出。
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= 5; i++) {
sb.append(i).append(" ");
}
System.out.println(sb.toString()); // 输出:1 2 3 4 5
异常处理方面,若输出对象为null,直接调用System.out.println(null)会导致编译错误(方法重载歧义),需先判断:
String str = null; System.out.println(str != null ? str : "null"); // 输出:null
控制台编码可能与程序编码不一致(如Windows默认GBK,程序使用UTF-8),导致乱码,可通过设置系统属性解决:
System.setProperty("file.encoding", "UTF-8");
Java控制台输出从基础的print()/println()到灵活的printf(),结合数据类型处理和异常应对,能满足多数场景需求,合理选择方法、优化输出格式,可提升程序的可读性和健壮性。



















