标准输入输出流(System.in,System.out)
原创
©著作权归作者所有:来自51CTO博客作者想买CT5的小曹的原创作品,请联系作者获取转载授权,否则将追究法律责任
1.标准输入流(System.in)
首先这个标准输入流的默认输入设备是键盘,数据源是键盘,下面看一个简单的程序。
package fuxi;
import java.io.IOException;
import java.io.InputStream;
public class StandardInputOutput {
public static void main(String[] args) throws IOException {
InputStream in = System.in;
int read = in.read();
System.out.println((char) read);
}
}
这一段程序是通过键盘录入读取,但是读取的只有一个。
要是想读取多个可以设置一个while循环,对录入的进行判断是否是-1.
package fuxi;
import java.io.IOException;
import java.io.InputStream;
public class StandardInputOutput {
public static void main(String[] args) throws IOException {
InputStream in = System.in;
int read;
while ((read = in.read()) != -1)
//一开始是打印int类型的,用char进行强制转换
System.out.print((char) read);
}
}
在这里可以看见的是录入的字母或者数字都可以正常打印,但是录入要是中文就是不行,出现乱码,因为这个InputStream是字节流
,为了解决这个问题你可以用转换流进行转换。
package fuxi;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class StandardInputOutput {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
System.out.println(input);
}
}
在这里可以看见用转换流使用成功了,这里可以输入字母数字中文也可以输入不会乱码,原因在于BufferedReader,他继承于Reader,这是字符输入流。
2.标准输出流(System.out)
package fuxi;
import java.io.*;
public class StandardInputOutput {
public static void main(String[] args) throws IOException {
PrintStream out = System.out;
out.print(true);
out.print(99);
out.print("我爱你啊你爱我蜜雪冰城甜蜜蜜");
out.println("------");
out.println(99);
out.close();
}
}
这是可以看到是换行和没有换行的区别
print就是不换行而println就换行了。