算法学习 --> 快速输入和输出

快速输入/输出

Scanner 和 System.out java调用IO太慢了,

  1. Scanner 每次读都需要调用 物理的IO机器, 所以读一定会超时

  2. System.out 也一样, 每次读都需要调用IO

  3. java分为两种读写 : 1. 字节流 , 2. 字符流 而 Scanner 和 System.out 就是 字节流

// 首先导入包

import java.io.*;

import java.util.*;

public class IOTest {

// 快速写对象 // 套一层 PrintWriter,使用 out 就和 System.out里的方法一样

private static PrintWriter out = new PrintWriter(

new BufferedWriter( // 将输出 给输出到 缓冲区里,最后在close刷新缓冲区

new OutputStreamWriter(System.out))); // 将输出 转成字符流

// 创建快速读对象

private static Read in = new Read();

public static void main(String\[\] args) throws IOException {

// 最重要的 ,输出要刷新缓冲区

out.close() ;

}

}

// 快速读

class Read{

// Tokenizer 是裁剪的意思

// StringTokenizer 就是做字符串裁剪的意思

private StringTokenizer st = new StringTokenizer("") ;

// Buffered 就是缓冲

// inputStreamReader 就是将字节流转为字符流

// 让后通过 BufferedReader 把 所有的输入 全部一次性给读到 一个 缓冲区里

// 后面要 读取数据 , 就直接从缓冲区里拿

private BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)) ;

// 按Scanner相同的名字来定义方法

String next() throws IOException{ // readLine需要抛异常

//需要一个while 循环, 当 stringTokenizer 字符串裁剪没有东西的时候,

// 从缓冲区里取出一行 ,来 方便我们进行读操作

while(!st.hasMoreTokens()){

st = new StringTokenizer(bf.readLine());

}

// 缓冲区里有多行数据 , bf.readLine里把一行数据拿出来,给 st 字符串裁剪

// st.nextToken() 就是从这 一行数据里 , 裁剪一个数据出来

return st.nextToken() ;

}

//获取一行字符串

String nextLine() throws IOException{

return bf.readLine() ; // 直接返回一行数据

}

// 下面的方法就换成各个类型数据

int newInt() throws IOException {

return Integer.parseInt(next()) ;

}

long newLong() throws IOException {

return Long.parseLong(next());

}

float newFloat() throws IOException{

return Float.parseFloat(next()) ;

}

}

相关推荐
麻瓜生活睁不开眼7 小时前
Android16修改全局桌面视图边框四直角显示为弧边圆角
android·java·深度学习
dear_bi_MyOnly7 小时前
【MyBatis 操作数据库】
java·数据库·学习·mybatis·学习方法
2601_953720827 小时前
【计算机毕业设计】基于Spring Boot的心理健康咨询与评测系统的设计与实现
java·spring boot·后端
一只小菜鸡..8 小时前
南京大学 操作系统 (JYY) 学习笔记:从 UNIX 到 Linux 与庞大的应用生态
笔记·学习·unix
丈剑走天涯8 小时前
JDK 17 正式特性
java·开发语言
圣光SG9 小时前
Java操作题练习(七)
java·开发语言·算法
MartinYeung59 小时前
[论文学习]迈向自主医疗人工智能智能体:MIRA系统深度分析
人工智能·学习
Cx330_FCQ10 小时前
Tmux使用
服务器·git·算法
@航空母舰10 小时前
SpringBoot通过Map实现天然的策略模式
java·spring boot·后端
熊猫钓鱼>_>11 小时前
ArkTS 装饰器总览:V1 / V2 / 通用装饰器完整学习笔记
笔记·学习·华为·交互·harmonyos·arkts·arkweb