黑马程序员技术交流社区

标题: 关于bufferedReader [打印本页]

作者: 刘圣繁    时间: 2013-2-22 00:00
标题: 关于bufferedReader
BufferedReader(new InputStreamReader(System.in))的方法 readLine() 如果键盘直接输入回车 那么 读到的是什么???

作者: 张君    时间: 2013-2-22 01:13
那当然是回车了、
作者: 刘圣繁    时间: 2013-2-22 01:15
张君 发表于 2013-2-22 01:13
那当然是回车了、

??读到的不是null吗

作者: 夏振博    时间: 2013-2-22 01:19
本帖最后由 夏振博 于 2013-2-22 01:22 编辑

回车的效果!
按回车就会输入\r\nwindows系统再解析成回车效果

作者: 黑马-张洋    时间: 2013-2-22 12:28
给你一个小demon让你理解
  1. package com.itheima;

  2. class test
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                   System.out.println("第一次无:----->"+"<------第一次无");
  7.               System.out.println("第一次有:----->"+"\r\n"+"<------第一次有");
  8.               
  9.               String a="\r\n";
  10.               
  11.               System.out.println("第二次无:----->"+"<------第二次无");
  12.               System.out.println("第二次有:----->"+a+"<------第二次有");
  13.         }
  14. }
复制代码
打印结果:
第一次无:-----><------第一次无
第一次有:----->
<------第一次有
第二次无:-----><------第二次无
第二次有:----->
<------第二次有


你可以理解为你按的回车,实际上是出现了,我在demon中定义的String类型的变量a。

再深入解释一下:
'\r'是回车,'\n'是换行,前者使光标到行首,后者使光标下移一格。通常用的Enter是两个加起来。

Unix系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“<换行><回车>”,即“\n\r”;Mac系统里,每行结尾是“<回车>”。一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。
作者: scott0610    时间: 2013-2-22 12:42
当用户按下回车时,readLine()方法独到的是'\n';系统再对'\n'做相应的处理(换行)。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2