当前位置: 首页 > news >正文

htnl5 做的视频网站站长平台社区

htnl5 做的视频网站,站长平台社区,wordpress建站需要学什么意思,亚马逊提升关键词排名的方法ACM 模式的原理 在输入输出的时候,会先将输入输出的东西放在一个文件里,这个文件也叫做 IO 设备 为什么 Scanner 会慢 new 一个 Scanner ,在 Scanner 里面调用 next 的时候,程序会直接访问 IO 设备。在调用一个 next 的时候&…

ACM 模式的原理

在输入输出的时候,会先将输入输出的东西放在一个文件里,这个文件也叫做 IO 设备

为什么 Scanner 会慢

image.png|407

new 一个 Scanner ,在 Scanner 里面调用 next 的时候,程序会直接访问 IO 设备。在调用一个 next 的时候,只会在 IO 设备中拿出一个数,再将这个数返回程序

调用一个 next 就会访问一次 IO 设备,程序访问 IO 设备的速度特别慢。所以当输入的数据量很大的时候,就会多次访问这个 IO 设备,所以就会超时

为什么 System. out 会慢

Scanner 读取数据一样。当输出数据的时候,也是将数据一个一个拿到 IO 设备中。由于程序访问 IO 设备的速度特别慢,所以只要数据量稍微多一些,就会超时

快速读

自定义快读模板

class Read{StringTokenizer st = new StringTokenizer("");BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));String next() throws IOException{while(!st.hasMoreTokens()){st = new StringTokenizer(bf.readLine());}return st.nextToken();}String nextLine() throws IOException{return bf.readLine();}int nextInt() throws IOException{return Integer.parseInt(next());}long nextLong() throws IOException{return Long.parseLong(next());}double nextDouble() throws IOException{return Double.parseDouble(next());}
}

模板解释

Java 在处理 IO 的时候,有两套标准:

  1. 字节流(System.in
  2. 字符流(带 Reader 或者 Writer

所以:

new InputStreamReader(System.in)

这里就是将字节流转换成了字符流

BufferedReader

它是一个带内存缓冲区的字符流。将要读取数据的时候,先将 IO 设备里面的数据一次性放到这个"内存缓冲区中"。然后 BufferedReader 再调用 next() 的时候,就是直接在内存缓冲区里面拿数据的

这对比 Scanner 调用 next 之后,一次一次地重复在 IO 设备中读取数据来说,BufferedReader 在调用 next 的时候,只需要读取一次内存缓冲区,就能读取到所有数据。

  • 直接从内存中拿数据,肯定是比访问 IO 设备要快得多的
    image.png

StringTokenizer

这里是字符串裁剪。本质是拿到缓冲区中的数据,然后裁剪成一个一个的字符串,最后再转换成你想要的 int、long、double 等类型…

我们在这个类中,new 了一个 BufferedReader,然后搞了一个字符串裁接


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

我们这个字符串裁接传入的是 bf.readLine()

  • 意思是:我们直接在内存缓冲区中拿一行数据,然后交给字符串裁接对象image.png

return st.nextToken();

这个对象向调用 next 返回的时候是 nextToken

  • 意思是:我把拿出的一行字符串,裁接出来一个字符串,然后交给你

最后再将这个字符串转换成你需要的数据类型即可

为什么需要 while 循环

这里不需要 while 循环也行

String next() throws IOException{st = new StringTokenizer(bf.readLine());return st.nextToken();
}

直接读取一行数据,然后直接返回裁出来的字符串就行

但是这里为什么要加上 while 呢?

  • 因为有一些输入输出的题目,输入的数据不止只有一行
  • 当把第一行的数据一个一个裁完之后,你是要读取下一行数据的
  • 所以需要一个 while 循环判断,当后面没有数据了,就重新再读入一行,然后再返回新读入的一行的字符串

BufferedReader 相较于 System.in 快,就是因为他带了一个缓冲区。先把文件里面的数据刷新到缓冲区里面,然后在缓冲区里面拿一行一行的数据。随后通过 StringTokenizer 将读取的一行一行数据(bf.readLine())一个个地进行裁剪工作。当后面还有的行时候,就一个一个的裁;当后面没有行的时候,就再重新读一行,一个一个地裁

快速写

public class Main{public static PrintWiter out = new PrinterWriter(new BufferedWriter(new OutputStreamWriter(System.in)));public static Read in = new Read();public static void main(String[] args) throws IOException{int t = in.nextInt;double d = in.nextDouble;	//...out.close;}
}
  • 这里的方法名和 Scanner 一样,正常直接调用即可

模板解释

new BufferedWriter(new OutputStreamWriter(System.in))

这里是把字符流转换为字节流

此处的 BufferedReader 是在输出的时候,不直接将数据从 IO 设备输出到程序,而是先将数据输出到内存缓冲区中,然后程序在内存缓冲区中直接读取数据(与输入原理一致)

PrintWriter

其实 BufferedWriter 已经满足我们的需求了,为什么还要套一层 PrintWriter 呢?

  • 因为 BufferWriter 的输出方式不好写,而 PrintWriter 的输出方式和 System.out 是完全一样的(使用方式完全一样)
http://www.yayakq.cn/news/60322/

相关文章:

  • 网站的关键词报价的网站海南智能网站建设设计
  • 巨野网站定制高端网站建设案例
  • 沈阳制作公司网站英语培训网站模板
  • php网站做语言包兰溪高端网站建设公司
  • 有域名有网站怎么解决办法百度快照手机版
  • 栖霞建设官方网站成都市网站建设费用及企业
  • 网站建设丷金手指专业十五上海公司变更联贝财务优势
  • 福州自助建站如何建设个人网站凡科怎么样
  • 网站首页没有收录微盟小程序模板
  • 广州网站建设公司哪个好营销网红
  • 住房和城乡建设部网站中国建造师网襄阳手机网站建设公司
  • 芜湖建设厅官方网站上海网站建设找站霸网络
  • 用什么网站做问卷郑州网站关键词优化公司
  • 鞍山市残疾人网站开发下载类网站怎么做
  • 网站销售好做吗专业购物网站建设多少钱
  • 上海网站建设开发哪家好网站策划书的撰写
  • 涿州做网站的最近韩国电影片免费韩国在线观看
  • 分红网站建设西安长安区网站优化地址
  • 模板式网站wordpress采集去掉多余链接火车头
  • 表格网站源码能打开各种网站的搜索引擎
  • 手机网站织梦模板企业信息公示网站
  • 惠州响应式网站哪家好品牌建设与退休管理
  • 电子厂网站建设方案书怎么写宁波网站推广网站优化
  • 朝阳专业网站建设公司wordpress获取分类文件夹
  • 宠物美容网站建设的目的如何一键打开多个wordpress
  • 高端品牌网站网站备案 关闭网站
  • 大连开发网站建设怎么在阿里云上做网站
  • 网站建设公司哪家最好wordpress选择虚拟云主机
  • 做网站怎么把背景变成纯色注册网站诚信承诺书
  • 个人求职网站源代码网页推广平台