zoukankan      html  css  js  c++  java
  • java 21

    标准输入输出流
      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");

    注意:  

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

    来玩个有意思的东西:

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

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

     1     public static void main(String[] args) throws IOException {
     2                 // 获取标准输入流
     3                 // // PrintStream ps = System.out;
     4                 // // OutputStream os = ps;
     5                 // OutputStream os = System.out; // 多态
     6                 // // 我们用字符流来包装字符流,表面是字符流,其实底层用的还是字节流(标准输出流)
     7                 // OutputStreamWriter osw = new OutputStreamWriter(os);
     8                 // BufferedWriter bw = new BufferedWriter(osw);
     9                 BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
    10                         System.out));
    11 
    12                 bw.write("hello");
    13                 bw.newLine();
    14                 bw.write("world");
    15                 bw.newLine();
    16                 bw.flush();
    17                 
    18                 bw.close();
    19     }

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

    System.in; 标准输入流:


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

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

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

    java HelloWorld hello world java

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

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

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

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

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

    结论:。。。还是用Scanner吧

      

    何事都只需坚持.. 难? 维熟尔。 LZL的自学历程...只需坚持
  • 相关阅读:
    ORACLE 计算时间相减间隔
    oracle中游标详细用法
    oracle中计算某月的天数
    Unity3D导出的EXE不用显示分辨率选择界面
    Unity3D 之暂停和继续的实现
    double的值太大,以及补0
    Unity3D鼠标点击物体产生事件
    java POi excel 写入大批量数据
    Unity3D 判断鼠标是否按在UGUI上
    Unity3D 之UGUI 滚动条
  • 原文地址:https://www.cnblogs.com/LZL-student/p/5929281.html
Copyright © 2011-2022 走看看