System类中有三个常量:
·out:表示标准的输出流,输出位置默认在控制台
·in:表示的标准的输入流,默认输入的源是键盘
·err:表示标准的错误输出,位置也是控制台
System.out:发现这个常量其实是一个PrintStream,因此存在通过一定改正,向其他位置输出的可能
package obc17;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
public class OopDemo09 {
public static void main(String[] args) {
PrintStream out = System.out;
out.print("dsfasdf");
out.close();
}
}
System.err其实也是一个PrintStream对象
package obc17;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
public class OopDemo09 {
public static void main(String[] args) {
PrintStream out = System.err;
out.print("dsfasdf");
out.close();
}
}
事实上两种本质没有区别,而且只在eclipse中,err信息才会显示红色,只能从概念上理解。
System.in:其实是一个InputStream对象,表示键盘的输入
package obc17;
import java.io.IOException;
import java.io.InputStream;
public class OopDemo10 {
public static void main(String[] args) {
InputStream in = System.in;
byte b[] = new byte[9];
System.out.println("请输入内容");
try {
in.read(b);
System.out.println("输入的内容为:"+new String(b));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
以上的程序完成了键盘的输入功能,但是程序存在数组长度的现在,而且在输入中文的时候也会存在问题,这个时候我们可以先解决第一个问题,不指定大小,边读边判断是否键盘还在输入
package obc17;
import java.io.IOException;
import java.io.InputStream;
public class OopDemo10 {
public static void main(String[] args) throws IOException {
InputStream in = System.in;
int temp=0;
StringBuffer sb = new StringBuffer();
System.out.println("请输入内容:");
while((temp=in.read())!=-1){
char c = (char)temp;
sb.append(c);
if(c=='\n'){
break;
}
}
System.out.println("输入的内容为:"+sb.toString());
}
}
这里解决了长度限制的问题,但是如果输入中文的话,已经无法正常读取,但是如果我们能够做到一次读取一行,那么就可以解决这个问题。这就需要用到BufferedReader,下一篇说说BufferedReader。