-
java中的换行符
2014-01-14 09:50:49java中写入文件时换行符是用"/r/n"还是"/n"?...使用 System.getProperty("line.separator")来获取当前OS的换行符,可以在调试的情况下看到! 各系统应当是: /r Mac /n Unix/Linux /r/n Wind -
黑马程序员——03Java换行符和i=i++的分析
2013-05-23 16:17:42------------android培训、java培训、期待与您交流...获取当前系统的换行符 注意: 1,在将流写入文件时,换行应根据操作系统的不同来决定。 2,在程序中我们应尽量使用System.getProperty("line.separator")来获取当1,“回车”(Return)和“换行”(Newline)/**获取当前系统的换行符
注意:
1,在将流写入文件时,换行应根据操作系统的不同来决定。
2,在程序中我们应尽量使用System.getProperty("line.separator")来获取当前系统的换行符,而不是写\r\n或\n。
3,当我们在java控制台输出的时候,\r\n和\n都能达到换行的效果。
*/
'\r'是回车,'\n'是换行,前者使光标到行首,后者使光标下移一格。回车和换行是两回事。通常用的Enter是两个加起来。Unix系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“<回 车><换行>”,即“\r\n”;Mac系统里,每行结尾是“<回车>”即“\r”。这样导致的直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。class LineSeparator{ public static void main(String[] args) { if(System.getProperty("line.separator").equals("\r\n")) { System.out.println("\\r\\n is for windows"); } else if(System.getProperty("line.separator").equals("\r")) { System.out.println("\\r is for Mac"); } elseif(System.getProperty("line.separator").equals("\n")) { System.out.println("\\n is for Unix/Linux"); } System.out.println("aa\nbb");//\n即为换行。 System.out.println("aaa\rbb");//特别注意输出为:bba 因为\r是回车,即光标返回本行首开始打印。 System.out.println("aa\r\nbb");//\r\n即为windows系统按下Enter键的操作,分两步,先回车后换行. } }
由以上分析可知,java的换行符可以是 '\n'或'\r\n'或'\r',即可能是两个字符也可能是一个字符。而在实际编程中最好用System.getProperty("line.separator")来获取当前平台的换行符,这样跨平台性更好。
回车和换行的有趣历史在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。
这就是“换行”和“回车”的来历,'\r'和'\n'也就是(回车”return和“换行”newline)的首字母。
后来,计算机发明了,这两个概念也就被搬到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。
Unix系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“<回 车><换行>”,即“\r\n”;Mac系统里,每行结尾是“<回车>” 即“\r”。一个直接后果是,Unix/Mac系统下的文件在Windows里打 开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。
2,Java中i=i++的特殊处理
在处理i=i++时,java虚拟机和VC的处理机制不同,利用javap -c Add命令进行反编译,得到下图,由此可分析出JVM的实际运行过程。class Add{ public staticvoid main(String[] args){ int x=0,z=0; for (inty=100;y>100 ;y-- ){ x=x++; z=++z; } System.out.println("x="+x+",z="+z); } }
解释上图反编译出来的字节码指令内容:0:把语句x=0中的常量0压入操作栈栈顶,此时栈顶为0;
1:弹出此时栈顶int型常量(即0)存储到位置为1的局部变量(即变量x)中,此时x=0;
2:把语句z=0中的常量0压入操作栈栈顶 ,此时栈顶为0;
3: 弹出此时栈顶int型常量(即0)存储到位置为2的局部变量(即变量z)中,此时z=0;
4:把语句y=0中的常量0压入操作栈栈顶 ,此时栈顶为0;
5: 弹出此时栈顶int型常量(即0)存储到位置为3的局部变量(即变量y)中,此时y=0;
6:从位置为3的局部变量(即变量y)中取出int类型的值装载到操作栈栈顶 ;
7:将byte类型的常量(即100)转换为int类型的常量 ,然后压入操作栈栈顶 ,此时栈顶为100;
9:条件转移指令,依次弹出栈顶两个元素,执行if(第一个元素>第二个元素)条件判断,如果判断结果为true则进行下一步(即第12步),否则转移到第28步。
12:从位置为1的局部变量(即变量i)中取出int类型的值(即0)装载到栈顶 ,此时栈顶为0;
13:变量1(即x)完成自增操作,即此时x=x+1;
16:把此时栈顶值(即0)存储到变量1中,此时x=0;
(注意:此步操作结果实际覆盖掉了变量自增产生的值,正是此步导致了变量x最后的输出为x=0,这也正是有别VC的地方)17:变量2(即z)完成自增操作,即此时z=z+1;
20:从位置为2的局部变量(即变量z)中取出int类型的值(即1)装载到栈顶 ,此时栈顶为1;
21:把此时栈顶值存入到变量2(即z)中,此时z=1;
22:变量3(即y)完成自增操作,此时y=y+1;
25:goto跳转到6步,进行循环;
28:得到结果,即为x=0,z=100。
-
java中写入文件时换行符是用"/r/n"还是"/n"?
2019-04-20 01:39:07java中写入文件时换行符是用"/r/n"还是"/n"? 原文:java中写入文件时换行符是用"/r/n...使用 System.getProperty(“line.separator”)来获取当前OS的换行符,可以在调试的情况下看到! 各系统应当是: /r Mac /n ...
java中写入文件时换行符是用"/r/n"还是"/n"?
/r 叫回车 Carriage Return
/n 叫新行 New Line
但是都会造成换行
使用 System.getProperty(“line.separator”)来获取当前OS的换行符,可以在调试的情况下看到!各系统应当是:
/r Mac
/n Unix/Linux
/r/n Windows这种输出的主要表现在用notepad打开时的显示。使用其他编辑器则没有明显变化!!
在winodws下,如果用"/n",则会显示成如下:
如果使用"/r/n",则会显示出换行的效果。
-
Java中写入文件时换行符是用“\r\n"还是"\n”?
2014-09-02 09:55:55java中写入文件时换行符是用"\r\n"还是"\n"?...使用 System.getProperty("line.separator")来获取当前OS的换行符,可以在调试的情况下看到! 各系统应当是: \r Mac \n Unix/Linux \r\n Windows -
java中写入文件时换行符是用“/r/n“还是“/n“?
2020-12-31 16:49:17使用 System.getProperty(“line.separator”)来获取当前OS的换行符,可以在调试的情况下看到! 各系统应当是: /r Mac /n Unix/Linux /r/n Windows 这种输出的主要表现在用notepad打开时的显示。使用其他编辑器则... -
Java中写入文件时换行符用"\r\n"、"\n"、"\r"?
2016-12-19 17:27:56ava是一个跨平台的语言,因为如果想写一个跨平台的软件,有些东西就需要考虑,例如换行。...通常建议使用line.separator的系统属性 System.getProperty("line.separator")来获取当前OS的换行符,可 -
回车,换行
2014-09-22 17:01:42\r 回车 Carriage Return \n 新行 New Line 但是都会造成换行 ...使用System.getProperty("line.separator")来获取当前OS的换行符 各系统取得的值 \r Mac \n Unix/Linux \r\n Windows -
java中\r与\n还有\r\n的区别
2012-01-12 11:30:51\r 叫回车 Carriage Return ...使用 System.getProperty("line.separator")来获取当前OS的换行符 各系统应当是: \r Mac \n Unix/Linux \r\n Windows 注明:QQ技术交流群:108614806 感兴趣的加一下。 -
java 换行
2016-02-15 11:49:51)来获取当前OS的换行符各系统是\r Mac\n Unix/Linux\r\n Windows 注意系统的差异 \r' ASCII码为13 是回车,将当前位置移到本行头print("xx\ryy\n"); xx将不会被输出 pyt... -
你必须知道的495个C语言问题
2015-10-16 14:14:28第1章 声明和初始化 基本类型 1.1 我该如何决定使用哪种整数类型? 1.2 为什么不精确定义标准类型的大小? 1.3 因为C语言没有精确定义类型...7.6 我使用fgets将文件的所有行读入一个数组,为什么读入的每一行都是... -
Visual C++范例大全 400+的实例源码
2010-04-01 21:30:54实例270——获取当前系统的所有进程 实例271——实现应用程序在系统中只能运行一个实例 实例272——获取所有打开窗口程序的句柄、类名及标题 实例273——创建和终止进程 实例274——三种方法实现启动其他的应用... -
你必须知道的495个C语言问题(高清版)
2010-03-31 16:24:09可我找不到任何方法来声明这样的函数——感觉我需要一个返回指针的函数,返回的指针指向的又是返回指针的函数……,如此往复,以至无穷。 12 数组大小 13 1.23 能否声明和传入数组大小一致的局部数组,或者由... -
《你必须知道的495个C语言问题》
2010-03-20 16:41:18《你必须知道的495个C语言问题》以问答的形式组织内容,讨论了学习或使用C语言的过程中经常遇到的一些问题。书中列出了C用户经常问的400多个经典问题,涵盖了初始化、数组、指针、字符串、内存分配、库函数、C预... -
editplus 代码编辑器html c++ jsp css
2009-08-08 13:00:27(6)选择“换行符”,插入“\n”,表示回车符。 ④、“替换为”组合框保持空,表示删除查找到的内容。单击“替换”按钮逐个行删除空行,或单击“全部替换”按钮删除全部空行(注意:EditPlus有时存在“全部替换”不... -
delphi 开发经验技巧宝典源码
2010-08-12 16:47:230108 使用Odd函数改变StringGrid组件的奇偶行颜色 72 0109 使用Pred函数获取顺序类型表达式的前驱 72 0110 使用Succ函数获取顺序类型表达式的后继 73 4.4 进制转换相关函数 73 0111 如何将二进制转换为八... -
EXCEL集成工具箱V6.0
2010-09-11 01:44:37【隔行插入】 在当前工作表中允许从M行到N行,隔X行插入Y行,并允许是否需复制标题Z行。 【制作工资条】 瞬间将工资明细表生成工资条,方便打印并裁剪。可以自己定义工资条标题的行数以及相隔行数、插入行数等。并... -
EXCEL集成工具箱完整版 (简体/繁体/英文多国语言版) V7.0
2010-08-13 10:31:10【隔行插入】 在当前工作表中允许从M行到N行,隔X行插入Y行,并允许是否需复制标题Z行。 【制作工资条】 瞬间将工资明细表生成工资条,方便打印并裁剪。可以自己定义工资条标题的行数以及相隔行数、插入行数等。并能... -
EXCEL集成工具箱V8.0 多国语言版(2003-2010通用)
2010-09-11 12:08:58【隔行插入】 在当前工作表中允许从M行到N行,隔X行插入Y行,并允许是否需复制标题Z行。 【制作工资条】 瞬间将工资明细表生成工资条,方便打印并裁剪。可以自己定义工资条标题的行数以及相隔行数、插入行数等。并... -
EXCEL集成工具箱V8.0完整增强版(精简)
2010-09-23 16:58:17【隔行插入】 在当前工作表中允许从M行到N行,隔X行插入Y行,并允许是否需复制标题Z行。 【制作工资条】 瞬间将工资明细表生成工资条,方便打印并裁剪。可以自己定义工资条标题的行数以及相隔行数、插入行数等。并...
-
HTML标记语言_1W_pro1
-
Linux系统用户与用户组管理
-
基于SSM的医院人事管理系统的设计与实现
-
CoolEdit测试语音时延方法
-
PPT大神之路高清教程
-
1081 Rational Sum (20 分)
-
wrox-c-sharp-5-0-progammers-reference(Rod Stephens).pdf
-
CB测试-源码
-
龙芯生态应用开发基础:C语言精要
-
第十一届蓝桥杯比赛-JavaB组-B题文件-2020.zip
-
参数优化的元遗传算法:此存储库中的应用程序仅用于标记多样性映射器。 但是,需要更改几行以合并其他遗传算法-源码
-
go mod 的不足
-
华为1+X认证——网络系统建设与运维(初级)
-
DNS域名解析全过程
-
java.lang.IllegalStateException: safe guard client , should not be called ,must have a bug.
-
使用vue搭建微信H5公众号项目
-
股份:事件发生的地方广场-源码
-
scala-continuations:Scala定界的continuation插件和库-源码
-
基于SSM实现的房屋租赁系统【附源码】(毕设)
-
计算机相关的外文文献翻译