lineseparator_首选System.lineSeparator()以用Java编写系统相关的行分隔符字符串
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编写系统相关的行分隔符字符串相关推荐
- 首选System.lineSeparator()以用Java编写系统相关的行分隔符字符串
JDK 7在java.lang.System类上引入了一个名为lineSeparator()的新方法. 该方法不期待任何参数,并返回一个String ,它表示"取决于系统的行分隔符字符串.& ...
- JAVA获取系统相关信息
获取JRE系统相关参数 java 通过System.getProperties()获取系统参数 Properties props=System.getProperties(); //系统属性 // ...
- 用java编写一个函数,统计一个字符串中每个字母出现的次数
2019独角兽企业重金招聘Python工程师标准>>> String str ="2342asfghgyu56asdasda"; Map<String,In ...
- java编写系统登录界面_java 登陆界面怎么写,连接数据库后
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 界面是 package 界面类; import javax.jws.soap.SOAPBinding.Use; import javax.swing.JB ...
- Java获取系统时间并转化为字符串
Date date = new Date();//获取当前的日期 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:s ...
- JAVA获取系统相关的信息
1获取JVM输入参数 List<String> list=ManagementFactory.getRuntimeMXBean().getInputArguments(); 2.获取当前J ...
- JAVA编写一个函数计算1到n之和_编写一个求和函数,用以求1到n的和 ,并返回和值。_学小易找答案...
[简答题]民宿 怎样做好个性化服务? (10.0分) [多选题]采取产品-市场集中化时,企业的目标市场( ) [单选题]So many mistakes in your homework! You m ...
- java实验系统常用类,Java的常用系统类
Java的常用系统类Tag内容描述: 1.Java语言与JBuilder应用初步 第六章 常用的Java系统类,本章要点,字符串类 数值(Number)类及其子类 数组类 集合类 Object类,字符 ...
- Java秒杀系统实战系列~构建SpringBoot多模块项目
摘要:本篇博文是"Java秒杀系统实战系列文章"的第二篇,主要分享介绍如何采用IDEA,基于SpringBoot+SpringMVC+Mybatis+分布式中间件构建一个多模块的项 ...
最新文章
- [JavaScript] 函数作用域问题
- 两个服务之间的调用请求
- 基于jsp邮件收发系统用javamail包
- VS2017 安装 QT5.9
- Datawhale组队-pandas(上)基础(自学)
- 00038oracle,ORACLE错误一览表
- c语言指针交换字符串组,c语言 指针交换两个字符串
- 设置DIV块元素在浏览器页面中垂直居中
- 手机触摸pass测试软件,PASS——功效分析和样本量计算软件
- 大数据时代移动营销的十大趋势
- 刷网课seleinum 小程序
- android 去广告浏览器,手机去广告浏览器Adblock Plus Browser
- html5图片任何改不透明度,如何巧改插入图片的透明度
- NPV、IRR的计算
- 【年度总结】回顾2021,展望2022,老杨来了
- oracle rac 停机,RAC停机重启方案
- 学并发编程,透彻理解这三个核心是关键
- 多元随机森林回归(Multivariate Random Forest Regreesor)经验总结
- 淘宝服务器哪个运营商速度快,三大运营商,谁的宽带网速最快?
- 《Python基础教程》第5章 条件、循环及其他语句
热门文章
- CF1379F1 Chess Strikes Back (easy version)(鸽笼原理、线段树)
- YBTOJ:伞兵空降(二分图匹配)
- 2021牛客暑期多校训练营3A-Guess and lies【dp】
- P3311-[SDOI2014]数数【AC自动机,dp】
- P4219-[BJOI2014]大融合【LCT】
- jzoj1273-袁绍的刁难【进制转换】
- jzoj1164-求和【欧拉函数,数论】(筛欧拉函数模板)
- 【线段树】【LCT】【LCA】树点涂色(luogu 3703)
- 学习笔记之ByteBuffer使用和实现以及文件内存映射
- 用数组选出最大的数并且排序