一、设备分类
1.标准输入设备:键盘
2.标准输出设备:终端窗口
3.标准错误设备:通常也使用终端窗口
二、Java语言使用java.lang.System类中的三个公共静态变量来支持
1.System.in:是InputStream对象,指用户键盘。
2.System.out:PrintStream 对象,指启动Java应用程序的终端窗口,PrintStream是OutputStream流的子类。
3.System.err:PrintStream 对象,指启动Java应用程序的终端窗口。
重新定义流,使其指向其他流目标:System.setIn(),System.setOut(),System.setErr();
三、标准输入读取数据
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; public class SystemIn { //标准输入读取数据 public static void main(String[] args) { System.out.println("hello");//访问标准输出设备 System.err.println("hello err");//访问标准错误设备 InputStream is = System.in; InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); try { String line = br.readLine(); while(line != null){ System.out.println(line); line = br.readLine(); } } catch (IOException e) { e.printStackTrace(); }finally{ if(br!=null){ try { br.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
四、格式化输入
import java.io.File; import java.io.InputStream; import java.util.Scanner; public class ScannerIn { //格式化输入 文本扫描器 public static void main(String[] args) { File file = new File(""); InputStream is = System.in; try { Scanner scanner = new Scanner(is); //Scanner scanner = new Scanner(file); while(scanner.hasNext()){ if(scanner.hasNextInt()){ int i = scanner.nextInt(); System.out.println("整数: "+i); }else if(scanner.hasNextDouble()){ Double d = scanner.nextDouble(); System.out.println("小数: "+d); }else{ String s = scanner.next(); System.out.println("字符串: "+s); } } scanner.close(); } catch (Exception e) { e.printStackTrace(); } } }
五、格式化输出
%s 格式化成字符串,toString();
%b 参数为null返回false,如果参数为Boolean值或者为Boolean,结果为false或true否则为true
%c 一个字符(char),Unicode字符。
%d 有符号十进制整数(int)
%o 无符号八进制整数
%x 使用十六进制数字0f的无符号十六进制整数
%f 单精度浮点数(默认float)、十进制记数法(%.nf 这里n表示精确到小数位后n位.十进制计数)
%g 科学计数法
%n 换行符
%% 打印一个百分号
1.%:表示格式说明的起始符号,不可缺少。
2.-:有-表示左对齐输出,如省略表示右对齐输出。
3.0:有0表示指定空位填0,如省略表示指定空位不填。
4.m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。n指精度。用于说明输出的实型数的小数位数。为指定n时,隐含的精度为n=6位。
5.l或h:l对整型指long型,对实型指double型。h用于将整型的格式字符修正为short型。
double d = 345.678; String s = "hello!"; int i = 1234; //"%"表示进行格式化输出,"%"之后的内容为格式的定义。 System.out.printf("%f",d);//"f"表示格式化输出浮点数。 System.out.printf("%9.2f",d);//"9.2"中的9表示输出的长度,2表示小数点后的位数。 System.out.printf("%+9.2f",d);//"+"表示输出的数带正负号。 System.out.printf("%-9.4f",d);//"-"表示输出的数左对齐(默认为右对齐)。 System.out.printf("%+-9.3f",d);//"+-"表示输出的数带正负号且左对齐。 System.out.printf("%d",i);//"d"表示输出十进制整数。 System.out.printf("%o",i);//"o"表示输出八进制整数。 System.out.printf("%x",i);//"d"表示输出十六进制整数。 System.out.printf("%#x",i);//"d"表示输出带有十六进制标志的整数。 System.out.printf("%s",s);//"d"表示输出字符串。 System.out.printf("输出一个浮点数:%f,一个整数:%d,一个字符串:%s",d,i,s);//可以输出多个变量,注意顺序。 System.out.printf("字符串:%2$s,%1$d的十六进制数:%1$#x",i,s);//"X$"表示第几个变量。
六、格式化日期
1.例子
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E"); String datestr = sdf.format(new Date());