首页 > 技术文章 > Java中的System.lineSeparator()方法的作用

irvin-chen 2021-03-30 15:58 原文

从方法名上可以得到,这是系统对象里的行分隔符,那么具体表示什么含义呢?

一、System类的概念
在API中system类介绍的比较简单,我们给出定义,system中代表程序所在系统,提供了对应的一些系统属性信息和系统操作。

注意,system类不能手动创建对象,因为构造方法被私有化(即被private关键字修饰),组织外界创建对象(即不能用new关键字生成一个对象)。System类中的都是静态方法(static关键字修饰),类名访问即可。在JDK中,有许多这样的类。在 System 类提供的设施中,有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的实用方法。

二、System.lineSeparator()的源码
从源码中可以看出,System.lineSeparator()确实返回的是行分隔符,它会根据当前的电脑系统返回对应的行分隔符

/**
* Returns the system-dependent line separator string. It always
* returns the same value - the initial value of the {@linkplain
* #getProperty(String) system property} {@code line.separator}.
*
* <p>On UNIX systems, it returns {@code "\n"}; on Microsoft
* Windows systems it returns {@code "\r\n"}.
*
* @return the system-dependent line separator string
* @since 1.7
*/
public static String lineSeparator() {
return lineSeparator;
}

private static String lineSeparator;
三、System.lineSeparator()具体含义
从JDK源码中可以得出:从JDK1.7(含)之后才开始有的这个方法,

在UNIX系统下,System.lineSeparator()方法返回 "\n"

在Windows系统下,System.lineSeparator()方法返回 "\r\n"

其实使用这个就实现了程序的跨平台运行,System.lineSeparator()方法会根据当前的系统返回对应的行分隔符。从而避免了你编写的程序在windows系统上可以运行,linux/unix系统上无法运行的情况。

推荐阅读