Java中的打印流PrintStream、输入流Scanner、装饰设计模式

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());
        }
    }
}

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值