lineseparator

JDK 7在java.lang.System类上引入了一个名为lineSeparator()的新方法。 该方法不期待任何参数,并返回一个String ,它表示“取决于系统的行分隔符字符串。” 此方法的Javadoc文档还指出System.lineSeparator() “始终返回相同的值– 系统属性 line.separator的初始值。” 它进一步说明:“在UNIX系统上,它返回“ \n ”; 在Microsoft Windows系统上,它返回“ \r\n ”。

既然Java开发人员长期以来一直能够使用System.getProperty(“ line.separator”)来获取此与系统相关的行分隔符值,那么为什么那个Java开发人员现在更喜欢使用System.lineSeparator ? JDK-8198645 [“使用System.lineSeparator()代替getProperty(“ line.separator”)”]提供了一些在其“说明”中偏爱System.lineSeparator()而不是System.getProperty(String)方法的原因:

基本模块中的许多类都使用System.getProperty(“ line.separator”),并且可以使用效率更高的System.lineSeparator()简化代码并提高性能。

正如JDK-8198645中的“描述”所述,与System.getProperty("line.separator")相比,使用System.lineSeparator()更简单,更高效。 core-libs-dev邮件列表上的最近一条消息提供了更多详细信息,Roger Riggs在该消息中写道System.lineSeparator() “使用System中的行分隔符,而不是每次都在属性中查找它。”

在许多情况下,与使用System.getProperty("line.separator") ,使用System.lineSeparator()的性能优势可能并不那么重要。 但是,鉴于其简单性,在编写更简单的代码时没有理由不获得性能上的好处(即使在许多情况下很难测量)。 System.getProperty(String)方法的缺点之一是必须确保将完全匹配的属性名称提供给该方法。 使用基于String的API时,总是存在将字符串拼写错误的风险(我见过“ sep a rator”多次拼写为“ sep e rator”),使用了错误的大小写,或者意外地引入了其他拼写错误,从而阻止了精确匹配被制造。

在JDK 7中引入了此功能的JDK问题JDK-6900043 (“返回line.separator属性的添加方法”)在其“说明”中也阐明了一些好处:“查询line.separator值在大型系统。 正确执行此操作很冗长,并可能导致安全性失败; 让方法返回该值将是有益的。” 重复的JDK-6264243 (“ File.lineSeparator()以检索常用的'line.separator'系统属性的值”)详细说明了此方法的优点,并列出了“正确性”,“性能”和“易用性”。使用和跨平台开发”作为高级优势。 另一个重复的问题, JDK-6529790 (“请将LINE_SEPARATOR常量添加到System或其他类中”)指出,应该以某种方式将“常量”添加到“某些标准Java类(如String或System)中”与File.pathSeparator为文件分隔符提供的内容相似 。

与JDK 7 System.lineSeparator()引入相关的消息之一使用以下描述来证明其补充:

许多类都需要使用System.getProperty("line.separator") 许多做法不正确,因为每当读取系统属性时都需要使用doPrivileged块。 但这并不是什么秘密-即使您对安全管理器不信任,也可以区分行分隔符。

与在JDK 7中添加System.lineSeparator()有关的一个有趣的旁注是,当时的Javadoc并未表明该方法是JDK 7的新功能。JDK-7082231 (“在System.lineSeparator上输入@since 1.7) ”)在JDK 8中解决了此问题,另外两个JDK问题( JDK-8011796和JDK-7094275 )则表明,这是多个Java开发人员所希望的。

System.lineSeparator()的引入是一个很小的增强,但是它确实提高了相对常用的API的安全性和可读性,同时并没有降低(实际上是在提高)性能。

翻译自: https://www.javacodegeeks.com/2018/02/prefer-system-lineseparator-writing-system-dependent-line-separator-strings-java.html

lineseparator

lineseparator_首选System.lineSeparator()以用Java编写系统相关的行分隔符字符串相关推荐

  1. 首选System.lineSeparator()以用Java编写系统相关的行分隔符字符串

    JDK 7在java.lang.System类上引入了一个名为lineSeparator()的新方法. 该方法不期待任何参数,并返回一个String ,它表示"取决于系统的行分隔符字符串.& ...

  2. JAVA获取系统相关信息

    获取JRE系统相关参数 java 通过System.getProperties()获取系统参数 Properties props=System.getProperties(); //系统属性 //   ...

  3. 用java编写一个函数,统计一个字符串中每个字母出现的次数

    2019独角兽企业重金招聘Python工程师标准>>> String str ="2342asfghgyu56asdasda"; Map<String,In ...

  4. java编写系统登录界面_java 登陆界面怎么写,连接数据库后

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 界面是 package 界面类; import javax.jws.soap.SOAPBinding.Use; import javax.swing.JB ...

  5. Java获取系统时间并转化为字符串

    Date date = new Date();//获取当前的日期 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:s ...

  6. JAVA获取系统相关的信息

    1获取JVM输入参数 List<String> list=ManagementFactory.getRuntimeMXBean().getInputArguments(); 2.获取当前J ...

  7. JAVA编写一个函数计算1到n之和_编写一个求和函数,用以求1到n的和 ,并返回和值。_学小易找答案...

    [简答题]民宿 怎样做好个性化服务? (10.0分) [多选题]采取产品-市场集中化时,企业的目标市场( ) [单选题]So many mistakes in your homework! You m ...

  8. java实验系统常用类,Java的常用系统类

    Java的常用系统类Tag内容描述: 1.Java语言与JBuilder应用初步 第六章 常用的Java系统类,本章要点,字符串类 数值(Number)类及其子类 数组类 集合类 Object类,字符 ...

  9. Java秒杀系统实战系列~构建SpringBoot多模块项目

    摘要:本篇博文是"Java秒杀系统实战系列文章"的第二篇,主要分享介绍如何采用IDEA,基于SpringBoot+SpringMVC+Mybatis+分布式中间件构建一个多模块的项 ...

最新文章

  1. [JavaScript] 函数作用域问题
  2. 两个服务之间的调用请求
  3. 基于jsp邮件收发系统用javamail包
  4. VS2017 安装 QT5.9
  5. Datawhale组队-pandas(上)基础(自学)
  6. 00038oracle,ORACLE错误一览表
  7. c语言指针交换字符串组,c语言 指针交换两个字符串
  8. 设置DIV块元素在浏览器页面中垂直居中
  9. 手机触摸pass测试软件,PASS——功效分析和样本量计算软件
  10. 大数据时代移动营销的十大趋势
  11. 刷网课seleinum 小程序
  12. android 去广告浏览器,手机去广告浏览器Adblock Plus Browser
  13. html5图片任何改不透明度,如何巧改插入图片的透明度
  14. NPV、IRR的计算
  15. 【年度总结】回顾2021,展望2022,老杨来了
  16. oracle rac 停机,RAC停机重启方案
  17. 学并发编程,透彻理解这三个核心是关键
  18. 多元随机森林回归(Multivariate Random Forest Regreesor)经验总结
  19. 淘宝服务器哪个运营商速度快,三大运营商,谁的宽带网速最快?
  20. 《Python基础教程》第5章 条件、循环及其他语句

热门文章

  1. CF1379F1 Chess Strikes Back (easy version)(鸽笼原理、线段树)
  2. YBTOJ:伞兵空降(二分图匹配)
  3. 2021牛客暑期多校训练营3A-Guess and lies【dp】
  4. P3311-[SDOI2014]数数【AC自动机,dp】
  5. P4219-[BJOI2014]大融合【LCT】
  6. jzoj1273-袁绍的刁难【进制转换】
  7. jzoj1164-求和【欧拉函数,数论】(筛欧拉函数模板)
  8. 【线段树】【LCT】【LCA】树点涂色(luogu 3703)
  9. 学习笔记之ByteBuffer使用和实现以及文件内存映射
  10. 用数组选出最大的数并且排序