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

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)中添加” constant”。与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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/347981.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信批量退款php,微信支付退款接口详解

微信支付有2个退款相关的接口,分别是申请退款API和查询退款API,这2个接口在实际微信支付开发中都会用到。其中申请退款API因为安全性,需要使用证书,证书在商户平台后台下载.申请退款接口支持一年以内的订单退款,可以分…

1235813找规律第100个数_人教版一年级下册数学第1-8单元知识点梳理填空,附答案...

参考答案:第一单元 认识图形1、认识平面图形 2、平面图形的拼组用相同的正方形、长方形或三角形可以分别拼成更大的正方形、长方形或三角形。3、认识七巧板 七巧板是由1个正方形、1个平行四边形、5个三角形组成的。第二单元 20以内的退位减法1、十几减几的计算方法(…

php m grep event,php-如何杀死与30分钟以上的grep匹配的进程?

我有一组并行运行的进程.有时有些闲荡时间超出了脚本的预期范围&#xff1a;$time_start microtime(true)$max_run_time 30 * 60; // 30 minutes, measured in secondswhile ((microtime(true)-$time_start) < $max_run_time) {// do stuff, but quit after 30 minutes}我…

透视变换–鸟瞰图_单例设计模式–鸟瞰

透视变换–鸟瞰图几天前&#xff0c;当我回到家乡时&#xff0c;我的一位来自同事的准青年参加了一家跨国公司的采访&#xff0c;在采访过程中受了重伤。 我的意思是&#xff0c;由于面试小组提出了一些难题&#xff0c;他无法使面试合格。 当我回到班加罗尔时&#xff0c;他分…

pandas整表写入excel指定位置_当Python遇到Excel,一个能打的都没有~

几乎人人都在用Excel&#xff0c;这种极易上手的数据分析工具无处不在&#xff0c;一旦你掌握了窍门&#xff0c;它就变得非常强大。而Python通常被认为更具有挑战性&#xff0c;但能做的事也更多。当Python遇到Excel会发生什么&#xff1f;本文将告诉你&#xff0c;这三项Exce…

linux用户密码转换为明文,Linux运维知识之linux下抓取内存中明文密码mimipenguin

本文主要向大家介绍了Linux运维知识之linux下抓取内存中明文密码mimipenguin&#xff0c;通过具体的内容向大家展现&#xff0c;希望对大家学习Linux运维知识有所帮助。下载地址&#xff1a;https://github.com/huntergregal/mimipenguin 基本使用语法&#xff1a;rootkali:~/e…

无需再忙了:Lambda-S3缩略图,由SLAppForge Sigma钉牢!

如果你还没有注意到了&#xff0c;我最近被唠叨试图开始使用时&#xff0c;我遭遇了陷阱AWSλ-S3正式例子 。 虽然大多数这些愚蠢的错误的指责是对我自己的懒惰&#xff0c;过度自尊和缺乏对细节的关注&#xff0c;我个人觉得&#xff0c;在开始与一家领先的无服务器供应商不应…

wap(dopra linux )命令,运营商定制的华为光猫Telnet命令恢复华为界面

首先Telnet连接光猫Welcome Visiting Huawei Home GatewayCopyright by Huawei Technologies Co., Ltd.Login:rootPassword:User name or password is wrong, please try it again!Login:rootPassword:adminWAP>suERROR::Command is not existedWAP>lsERROR::Command is …

请简述gouraud光照模型_《计算机图形学》试卷及答案

一、填空题(每空0.5分&#xff0c;共 1 0 分)1、 计算机图形学中的图形是指由点、线、面、体等 和明暗、灰度(亮度)、色彩等 构成的&#xff0c;从现实世界中抽象出来的带有灰度、色彩及形状的图或形。 2、 一个计算机图形系统至少应具有 、 、输入、输出、 等基本功能。3、 常…

linux下运行yolo,Ubuntu下CPU/GPU模式YOLOv3代码运行

YOLO是近几年物体检测主要算法之一&#xff0c;2018年已发展到YOLOv3&#xff0c;是目前速度最快的物体检测算法&#xff0c;详细内容可查看YOLO主页。YOLO的主要优势在于基于纯C语言编写的DarkNet&#xff0c;可查看DarkNet主页&#xff0c;不需要其他依赖库&#xff0c;跨平台…

sqlyog设置自动补全_Visual Studio Code 最好的功能、插件和设置

Visual Studio Code 是由 Microsoft(微软) 发布的一个免费的&#xff0c;开源的跨平台文本编辑器。他们基于在线编辑 Visual Studio Online (代号为 “Monaco”)&#xff0c;并结合 GitHub 的 Electron 实现的一个跨平台编辑器。他们在为程序员创建一个快速且高效工作环境方面取…

ejb 示例 2018_Java EE EJB拦截器教程和示例

ejb 示例 2018在此示例中&#xff0c;我们将看到如何在EJB中使用拦截器并使用简单的Web应用程序对其进行测试。 1.简介 顾名思义&#xff0c;当您想拦截对EJB方法的调用时&#xff0c;将使用拦截器。 如果为Bean声明一个拦截器&#xff0c;则每次调用该Bean的方法时&#xff0…

linux怎么使用串口线,如何在Linux下使用USB转串口线,鼎力告诉您

亲爱的朋友&#xff0c;如果您使用的Linux的系统&#xff0c;应该怎么来使用我们的鼎力的USB转串口线呢&#xff1f;下面就来告诉您吧&#xff01;用Linux&#xff0c;不需要另外安装USB转串口驱动!前提是你要先安装minicom输入命令&#xff1a;dmesg| grep usb&#xff0c;看到…

stlink 升级固件以后失败_STM32固件升级的一点经验

上面理论实践当初花了3天时间弄完的&#xff0c;但是&#xff0c;当你真正做项目的时候&#xff0c;你会发现&#xff0c;只有上面的这些知识还不够&#xff0c;还有更多的细节要去处理&#xff1a;APP程序怎么跳转到BootLoader程序&#xff1f;APP程序和BootLoader之间是否会互…

linux搭建Django环境,Linux (ubuntu 12.04)下搭建Python Django环境

1. 检查python是否安装&#xff1a;直接在shell里输入python&#xff0c;如果已经安装了python&#xff0c;即可进入python bash&#xff0c;并看到版本号(如Python 2.7.3)——在ubuntu中python应该是已经默认安装好了2. 安装Django:sudopythonsetup.pyinstall检查Django是否安…

comsol分析时总位移代表什么_超弹性材料模型的压缩分析

为了表征超弹性材料&#xff0c;需要进行各种测试获取实验数据&#xff0c;包括承受单轴拉伸和压缩、双轴拉伸和压缩以及扭转测试。今天&#xff0c;我们向大家介绍如何使用通过单轴和双轴测试获得的拉伸和压缩测试数据&#xff0c;模拟由弹性泡沫材料制成的球体的压缩。通过案…

linux函数计时,Linux 中的计时——gettimeofday函数

&#xff11;.使用C语言进行计时在用户空间中可以使用C语言函数gettimeofday 得到时间&#xff0c;它的调用格式是&#xff1a;#include int gettimeofday(struct timeval *tv, struct timezone *tz);int settimeofday(const struct timeval *tv , const struct timezone *tz);…

由对称性知定点一定在x轴上_线上优秀教学案例(九)|计算机科学与工程学院刘钊:“延期不延教”之“1+X课堂”...

【编者按】受新冠肺炎疫情影响&#xff0c;按照教育部和河北省教育厅统一部署&#xff0c;学校延迟春季开学时间。为最大程度减少疫情和延期开学对我校教育教学工作的影响&#xff0c;本学期&#xff0c;我校以线上教学的形式拉开序幕。面对新的教学模式&#xff0c;各学院、广…

cxf restful_使用Apache CXF开发RESTful服务

cxf restful介绍 如您所知&#xff0c;有两种开发Web服务的方法 简单对象访问协议&#xff08;SOAP&#xff09; 代表性状态转移&#xff08;REST&#xff09; 在继续学习如何使用Apache CXF创建基于REST的Web服务之前&#xff0c;我们将了解什么是REST。 REST不是一种技术&…

linux adc测试程序,基于Qt4.7的ADC测试程序

所使用的开发板&#xff1a;友善之臂tiny6140widget.h#ifndef WIDGET_H#define WIDGET_H#include #include namespace Ui {class Widget;}class TMainForm : public QWidget{Q_OBJECTpublic:TMainForm(QWidget * parent 0, const char * name 0, Qt::WFlags f 0);virtual ~T…