文章目录
1.打印流 PrintStream
1.1 打印流的概念
打印流设计的主要目的是为了解决OutputStream的设计缺陷(OutputStream只提供字节数组或者单字节的输出),属于OutputStream功能的加强版。如果只是想通过程序向终端目标输出信息的话,OutputStream不是很方便,因为所有的数据都必须转换为字节数组。如果要输出的是int、double等数据类型就更加不便于输出
1.2 打印流的底层实现
import java.io.*;
class PrintUtil{
private OutputStream out;
public PrintUtil(OutputStream out) {
this.out = out;
}
public void print(String str){
try {
//核心依旧是OutputStream的write功能
out.write(str.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
public void println(String str){
this.print(str+"\r\n");
}
public void print(int num){
this.print(String.valueOf(num));
}
public void println(int num){
this.print(String.valueOf(num)+"\r\n");
}
public void print(double num){
this.print(String.valueOf(num));
}
public void println(double num){
this.print(String.valueOf(num)+"\r\n");
}
public void close() throws IOException {
this.out.close();
}
}
public class Test{
public static void main(String[] args) throws IOException {
File file = new File("C:\\Users\\79024\\Desktop\\java.txt");
PrintUtil print = new PrintUtil(new FileOutputStream(file));
print.print("姓名:");
print.println("张三");
print.print("身高:");
print.println(1.74);
print.print("年龄:");
print.println(20);
print.close();
}
}
打印流设计的主要目的是为了解决OutputStream的设计问题,其本质不会脱离OutputStream。
1.3 系统提供的两大打印流
PrintStream:字节打印流
PrintWrite:字符打印流
我们一般常用字节打印流
import java.io.*;
public class Test{
public static void main(String[] args) throws IOException {
File file = new File("C:\\Users\\79024\\Desktop\\java.txt");
PrintStream print = new PrintStream(new FileOutputStream(file));
print.print("姓名:");
print.println("张三");
print.print("身高:");
print.println(1.74);
print.print("年龄:");
print.println(20);
print.close();
}
}
1.4 装饰设计模式
基于抽象类
核心是某个类的功能,另一个类是为了更好的操作效果,让其支持的功能更多
打印流应用到的是装饰设计模式
优点:扩展功能特别方便
缺点:类结构复杂
2.输入流Scanner
2.1 常用方法
2.1.1 判断是否有指定类型数据输入
public boolean hasNext***();
// ***为基本数据类型
2.1.2 取得指定类型的数据
public 数据类型 next***();
//***为基本数据类型
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入内容:");
if(scanner.hasNextInt()){
System.out.println(scanner.nextInt());
}
}
}