说明:这里的标准不可以理解为“规范”。标准输入指键盘输入,标准输出指控制台输出。
这一节讲解标准输入流和标准输出流。
例1:示例了 syso 或者 sout 的深层道理,其实就是 PrintStream
/**
* Created by liwei on 16/7/19.
*/
/*
* System.in 标准输入流。是从键盘获取数据的
*
* 键盘录入数据的三种方法:
* A:main方法的args接收参数。
* java HelloWorld hello world java
* B:Scanner(JDK5以后的)
* Scanner sc = new Scanner(System.in);
* String s = sc.nextLine();
* int x = sc.nextInt()
* C:通过字符缓冲流包装标准输入流实现
* BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
*/
public class SystemInDemo {
public static void main(String[] args) throws IOException{
// //获取标准输入流
// InputStream is = System.in;
// //我要一次获取一行行不行呢?
// //行。
// //怎么实现呢?
// //要想实现,首先你得知道一次读取一行数据的方法是哪个呢?
// //readLine()
// //而这个方法在哪个类中呢?
// //BufferedReader
// //所以,你这次应该创建BufferedReader的对象,但是底层还是的使用标准输入流
// // BufferedReader br = new BufferedReader(is);
// //按照我们的推想,现在应该可以了,但是却报错了
// //原因是:字符缓冲流只能针对字符流操作,而你现在是字节流,所以不能是用?
// //那么,我还就想使用了,请大家给我一个解决方案?
// //把字节流转换为字符流,然后在通过字符缓冲流操作
// InputStreamReader isr = new InputStreamReader(is);
// BufferedReader br= new BufferedReader(isr);
InputStream is = System.in;
PrintStream pw = System.out;
pw.println("今天是个好日子");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入一个字符串:");
// 代码执行到这一行发生阻塞
String line = br.readLine();
System.out.println("您输入的字符串是:" + line);
System.out.println("请输入一个整数:");
line = br.readLine();
Integer i = Integer.parseInt(line);
System.out.println("您输入的整数是:" + i);
}
}
例2:标准输出流的清晰认识
/*
* 标准输入输出流
* System类中的两个成员变量:
* public static final InputStream in “标准”输入流。
* public static final PrintStream out “标准”输出流。
*
* InputStream is = System.in;
* PrintStream ps = System.out;
*/
public class SystemOutDemo {
public static void main(String[] args) {
System.out.println("hello world");
// 获取标准输出流对象
// 有这里的讲解我们就知道了,这个输出语句其本质是IO流操作,把数据输出到控制台。
PrintStream ps = System.out;
ps.println("今天是你的生日中国");
ps.println();
ps.println("演唱:董文华");
// ps.print();//这个方法不存在
// System.out.println();
// System.out.print();
}
}
例3:转换流的应用
/**
* Created by liwei on 16/7/20.
*
* 转换流的应用
*/
public class SystemOutDemo2 {
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 world");
bw.newLine();
bw.write("liwei");
bw.newLine();
bw.write("haha");
bw.newLine();
bw.flush();
bw.close();
}
}