黑马程序员技术交流社区
标题:
个人理解:java中的Scanner类需要手动关闭吗?
[打印本页]
作者:
马明杨
时间:
2013-11-16 12:53
标题:
个人理解:java中的Scanner类需要手动关闭吗?
个人理解,不喜勿喷,多多指教:
Scanner是不需要调用close()方法的。
请看Scanner类的API:原文如下:
close
public void
close
()关闭此扫描器。
如果此扫描器尚未关闭,并且其底层
readable
也实现
Closeable
接口,则该 readable 的 close 方法将被调用。
如果此扫描器已经关闭,则调用此方法无效。
在扫描器关闭后执行搜索操作将导致
IllegalStateException
。
注意:
如果此扫描器尚未关闭,并且其底层
readable
也实现
Closeable
接口,则该 readable 的
close
方法将被调用。这句话就表明,无需再调用close()方法,因为
其底层
readable
也实现
Closeable
接口,
Closeable
接口内就有一个方法:close(),Scaner的底层实现了它,也就代表重写了close()方法,如果再人为的写入close(),那就是多次一举了,当然也不算错。
/*
请写一个功能,完成两个数求和。
数据从键盘录入。并测试。
*/
import java.util.Scanner;
class ScannerTest
{
public static void main(String[] args)
{
//封装键盘录入
Scanner sc = new Scanner(System.in);
//获取两个数据
System.out.println("请输入第一个数据:");
int a = sc.nextInt();
System.out.println("请输入第二个数据:");
int b = sc.nextInt();
int result = sum(a,b);
System.out.println("求和结果是:"+result);
}
public static int sum(int a,int b)
{
return a + b;
}
}
这个程序是可以正常执行的,也不存在什么资源浪费的问题。IDE工具也不会报告任何错误。谢谢,如果有什么地方不对,各位请指正。
作者:
赵晓海
时间:
2013-11-16 13:40
本帖最后由 赵晓海 于 2013-11-16 14:26 编辑
不会提示错误,是黄色叹号的提示。直接传图的话,图会被缩小,截图在附件里。
到底需不需要?我只是照提示添了一个。
求大神来解释
image.zip
2013-11-16 14:26 上传
点击文件名下载附件
52.83 KB, 下载次数: 172
作者:
小痞痞
时间:
2013-11-16 14:10
应该存在资源浪费的问题吧
虽然不用关流最后还是会被关闭
但是那是jvm帮你关的 jvm不可能在你刚用完就帮你关掉而是等他有时间了在帮你关掉
所以没有自己手动关掉的节约资源
IO中基本上所有的流都是实现了closeable接口
个人理解
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2