java – scanner.close()做什么?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – scanner.close()做什么?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1779字,纯文字阅读大概需要3分钟。
内容图文
![java – scanner.close()做什么?](/upload/InfoBanner/zyjiaocheng/700/5abd84b2818b4e6d98877605c048c7b9.jpg)
说我有以下示例代码:
Scanner scan1 = new Scanner(System.in); // declaring new Scanner called scan1
int x = scan1.nextInt(); // scan for user input and set it to x
System.out.println(x); // print the value of x
scan1.close(); // closes the scanner (I don't know exactly what this does)
Scanner scan2 = new Scanner(System.in); // declaring new Scanner called scan1
int y = scan2.nextInt(); // scan for user input and set it to y
System.out.println(y); // print the value of y
我读了Oracle documentation on the Scanner class并且发现了这个:
When a Scanner is closed, it will close its input source if the source implements the Closeable interface.
这是否意味着一旦Scanner(of System.in)关闭,我将无法再在整个Java程序中使用System.in?或者这是否意味着我将不再能够在整个班级使用它?还是只有方法?或者只是它的范围?
我的另一个问题是,Scanner是否仅限于声明的范围(类似于原始数据类型)?
解决方法:
是的,这确实意味着System.in将被关闭.测试用例:
import java.util.*;
public class CloseScanner {
public static void main(String[] args) throws Exception {
Scanner scanner = new Scanner(System.in);
scanner.close();
System.in.read();
}
}
此代码终止于
$java CloseScanner
Exception in thread "main" java.io.IOException: Stream closed
at java.io.BufferedInputStream.getBufIfOpen(BufferedInputStream.java:162)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:206)
at java.io.BufferedInputStream.read(BufferedInputStream.java:254)
at CloseScanner.main(CloseScanner.java:7)
关闭后,您将无法在程序的其余部分使用System.in. close()传递的事实很好,因为这意味着您不必维护对输入流的单独引用,以便以后可以关闭它,例如:
scanner = new Scanner(foo.somethingThatMakesAnInputStream());
您可以这样做并在扫描程序上调用.close()来关闭底层流.
在大多数情况下,您不希望关闭System.in,因此在这种情况下您不希望调用.close().
内容总结
以上是互联网集市为您收集整理的java – scanner.close()做什么?全部内容,希望文章能够帮你解决java – scanner.close()做什么?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。