标准输入输出流
  System类中的两个成员变量:
    public static final InputStream in “标准”输入流。
    public static final PrintStream out “标准”输出流。

    pnputStream is = System.in;
    printStream ps = System.out;

System.out; 标准输出流:

其实从上面就可以看出来了

        System.out.println("helloworld");

其实等于

        PrintStream ps = System.out;
ps.println("helloworld");

注意:  

 PrintStream ps = System.out;
//下面这两种方法,其实是一种方法是不存在的,注:()内没东西。
ps.print();
System.out.print();

来玩个有意思的东西:

如何让字节流变为字符流进行操作呢?

我们可以通过转换流来玩,字节流→转换流→字符流

     public static void main(String[] args) throws IOException {
// 获取标准输入流
// // PrintStream ps = System.out;
// // OutputStream os = ps;
// OutputStream os = System.out; // 多态
// // 我们用字符流来包装字符流,表面是字符流,其实底层用的还是字节流(标准输出流)
// OutputStreamWriter osw = new OutputStreamWriter(os);
// BufferedWriter bw = new BufferedWriter(osw);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
System.out)); bw.write("hello");
bw.newLine();
bw.write("world");
bw.newLine();
bw.flush(); bw.close();
}

。。。麻烦要死,理解就好了吧

System.in; 标准输入流:

输入流和输出流差不多,不用介绍。下面说下一个有意思的东西:

到JDK1.7为止,有3种方式实现键盘录入:

    1、main方法的args接收参数:    

java HelloWorld hello world java

  2、Scanner (JDK1.5以后才有的)

 Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
int x = sc.nextInt();
...

  那么,在JDK1.5之前,用的是这种方式:

3、通过字符缓冲流包装标准输入流实现:

     public static void main(String[] args) throws IOException {
// //获取标准输入流
// InputStream is = System.in;
// 但是,这个一次只能获取一个字节。而我们想要的是一次获取一行数据
// 要想实现,首先你得知道一次读取一行数据的方法是哪个呢?
// readLine()
// 而这个方法在BufferedReader类中,所以,我们应该创建BufferedReader的对象,但是底层还是的使用标准输入流
// BufferedReader br = new BufferedReader(is);
// 但是这里还是出现错误。原因是:字符缓冲流只能针对字符流操作,而InputStream是字节流,所以不能使用
// 要想使用的话,就只能把字节流转换为字符流,然后在通过字符缓冲流操作 // InputStreamReader isr = new InputStreamReader(is);
// BufferedReader br= new BufferedReader(isr); 这两句可以写作下面一句
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("请输入一个字符串:");
String line = br.readLine();
System.out.println("你输入的字符串是:" + line); System.out.println("请输入一个整数:");
// int i = Integer.parseInt(br.readLine());
line = br.readLine();
int i = Integer.parseInt(line);
System.out.println("你输入的整数是:" + i);
}

结论:。。。还是用Scanner吧

  

java 21 - 11 IO流的标准输入流和标准输出流的更多相关文章

  1. java 21 - 12 IO流的打印流

    打印流 字节流打印流 PrintStream 字符打印流 PrintWriter打印流的特点: A:只有写数据的,没有读取数据.只能操作目的地,不能操作数据源.(只能写入数据到文件中,而不能从文件中提 ...

  2. java 21 - 13 IO流之序列化和反序列化

    序列化流:把对象按照流一样的方式存入文本文件或者在网络中传输.对象 -- 流数据(ObjectOutputStream) 构造方法:ObjectInputStream(InputStream in) ...

  3. java 21 - 1 IO流中的字符流概述

    字节流通过读取一个byte数组的方式可以读取中文的,但是有可能出现小问题,所以,读取中文最好是用字符流. 字符流: 字符流=字节流+编码表. 编码表: 由字符及其对应的数值组成的一张表 编码表介绍: ...

  4. java 21 - 13 IO流之 合并流

    SequenceInputStream :表示其他输入流的逻辑串联. 构造方法摘要 SequenceInputStream(Enumeration<? extends InputStream&g ...

  5. java 21 - 7 IO流小结的图解

  6. 第53节:Java当中的IO流(上)

    Java当中的IO流 在Java中,字符串string可以用来操作文本数据内容,字符串缓冲区是什么呢?其实就是个容器,也是用来存储很多的数据类型的字符串,基本数据类型包装类的出现可以用来解决字符串和基 ...

  7. Java当中的IO流(上)

    Java当中的IO流 在Java中,字符串string可以用来操作文本数据内容,字符串缓冲区是什么呢?其实就是个容器,也是用来存储很多的数据类型的字符串,基本数据类型包装类的出现可以用来解决字符串和基 ...

  8. 第55节:Java当中的IO流-时间api(下)-上

    Java当中的IO流(下)-上 日期和时间 日期类:java.util.Date 系统时间: long time = System.currentTimeMillis(); public class ...

  9. Java中的IO流(四)

    上一篇<Java中的IO流(三)>把IO流中的文件及目录操作的对象File类记录了一下,本篇把本不属性IO流但又和IO流有关系的一个对象作一下记录,此对象本属于集合框架里的一个子集,即Pr ...

随机推荐

  1. Web前端小白入门指迷

    前注:这篇文章首发于我自己创办的服务于校园的技术分享 [西邮 Upper -- 004]Web前端小白入门指迷,写得很用心也就发在这里. 大前端之旅 大前端有很多种,Shell 前端,客户端前端,Ap ...

  2. C# Winform打包部署时添加注册表信息实现开机启动

    使用VS自带的打包模块可以很方便的对项目进行打包部署,同时我们也可以在安装部署时操作注册表实现开机启动软件.具体实现如下: 1.添加安装部署项目后,鼠标右键安装项目->视图->注册表,HK ...

  3. SharePoint 2013 Workflow 分布式配置问题记录

    SharePoint 2013 发布已经有一段时间,前段事件主要是做财务项目,用到Oracle和HFM,由于从来没了解过这两个软件,把大部分时间用在了学习Oracle和HFM的API,目前对HFM的A ...

  4. 初识python(1)

    1.python简介 Python是一种面向对象.直译式计算机程序语言.也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定. Python语法简捷而清晰,具有丰富和强大的类库.它 ...

  5. 利用Handler访问网络数据

    废话不多白吃,代码如下: 1.MainActivity package com.yz.day11_22_handler;import android.app.Activity;import andro ...

  6. IOS沙盒

    可以先在程序打印沙盒路径: NSLog(@"路径%@",NSHomeDirectory()); ------------------------------------------ ...

  7. UnityShader之固定管线命令Combine纹理混合【Shader资料4】

    Combine,纹理混合. 我们先看圣典上给的解释. 纹理在基本的顶点光照被计算后被应用.在着色器中通过SetTexture 命令来完成. SetTexture 命令在片面程序被使用时不会生效:这种模 ...

  8. Spring web.xml配置文件解析

    概要解析

  9. JS 日期对象在浏览器间的若干差异

    JS中 ,通过 new Date() 可以获取当前时间 也可以通过 new Date("2013/12/12 8:00:00")的方式,创建某个指定时间对象 在Chrome和FF下 ...

  10. 使用sysbench进行压力测试

    sysbench是一款开源的多线程性能测试工具,可以执行CPU/内存/线程/IO/数据库等方面的性能测试.数据库目前支持MySQL/Oracle/PostgreSQL/Drizzle,它主要包括以下几 ...