黑马程序员技术交流社区
标题:
关于BufferedReader知识的迷茫
[打印本页]
作者:
杨强彪
时间:
2015-3-9 20:41
标题:
关于BufferedReader知识的迷茫
这是我看的一个程序里单独的
public static void main(String[] args) throws Exception
{
// TODO Auto-generated method stub
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
GuanLi gu=new GuanLi();
while(true)
{
System.out.println("请选择你要进行的操作:");
System.out.println("A:添加一个员工");
System.out.println("B:查找一个员工");
System.out.println("C:修改一个员工工资");
System.out.println("D:删除一个员工");
System.out.println("E:遍历所有员工");
System.out.println("F:退出系统");
String anniu=br.readLine(); //键盘输入代码
if(anniu.equals("A"))
{
System.out.println("请输入添加员工编号:");
String number=br.readLine();
System.out.println("请输入添加员工姓名:");
String name=br.readLine();
System.out.println("请输入添加员工年龄:");
int age=Integer.parseInt(br.readLine());
System.out.println("请输入添加员工工资:");
float soal=Float.parseFloat(br.readLine());
Yuangong yu=new Yuangong(name,number,age,soal);
gu.addyuan(number, yu);
System.out.println("新员工添加成功");
}
else if(anniu.equals("B"))
{
System.out.println("请输入员工编号:");
String number=br.readLine();
另一个程序在BufferedReader br前一行还得写代码Inputer。。。如下图 ,他们究竟是什么情况要在一起用?
韩顺平.循序渐进学.java.从入门到精通.第27讲-作业评讲_201539203718.JPG
(161.68 KB, 下载次数: 19)
下载附件
2015-3-9 20:41 上传
作者:
习惯就好
时间:
2015-3-9 20:50
哪里不太明白?
作者:
万合天宜
时间:
2015-3-9 20:59
那是Scanner的底层,就是获取用户控制台输入的输入流。Scanner sc = new Scanner(System.in);
作者:
xxxqian1111
时间:
2015-3-9 21:12
版主正解啊
作者:
李哲天
时间:
2015-3-9 21:42
第一种写法:BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
作者:
李哲天
时间:
2015-3-9 21:44
第二种写法:InputStreamReader ist = new InputStreamReader(System.in); BufferedReader br = new Buffered(ist); 这两种写法没区别
作者:
李哲天
时间:
2015-3-9 21:55
其中涉及到字节流/字符流的转换,BufferedReader是字符流,System.in是对应于与键盘的字节输入流,查看文档,System.in返回值是InputStream,因此,从System.in这个InputStrem到BufferedReader这个Reader(字符流),需要借助InputStreamReader这个转换流,把字节流转换成字符流。
作者:
李忠兵
时间:
2015-3-9 22:01
BufferedReader需要关联的是Reader类型的字符流对象,而System.in返回的是一个InputStream类型的字节流数据,需要通过InputStreamReader这个“字节流通向字符流的桥梁”来转换为字符类型的数据流。
作者:
李哲天
时间:
2015-3-9 22:06
楼主不要怕,这种用法很固定的,见几次就好啦,我之前一直自学,今天第一次发言,得第一个技术分,还挺有缘分的。
作者:
z47057554
时间:
2015-3-10 13:47
本帖最后由 z47057554 于 2015-3-10 13:49 编辑
这是匿名对象的问题,
BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); 中的
new InputStreamReader(System.in)是个匿名对象,也就是没给他起名字,直接当参数,用完就没,只能用一次
它是下面格式的简写,它的出现是为了
简化代码书写
,局限性就是,用完一次就变垃圾,无法再次使用,会被java回收
InputStreamReader isr=new InputStreamReader(System.in);
这是先给对象赶起个名字,然后再把它当作参数
BufferedReader br=new BufferedReader(isr);
有名字后用名字当参数传就可以,用完后不会变垃圾,因为还有isr指向它
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2