A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

个人理解,不喜勿喷,多多指教:
Scanner是不需要调用close()方法的。

请看Scanner类的API:原文如下:

closepublic 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工具也不会报告任何错误。谢谢,如果有什么地方不对,各位请指正。


评分

参与人数 1黑马币 +4 收起 理由
枫儿 + 4 赞一个!

查看全部评分

2 个回复

倒序浏览
本帖最后由 赵晓海 于 2013-11-16 14:26 编辑

不会提示错误,是黄色叹号的提示。直接传图的话,图会被缩小,截图在附件里。
到底需不需要?我只是照提示添了一个。
求大神来解释

image.zip

52.83 KB, 下载次数: 172

评分

参与人数 1黑马币 +4 收起 理由
枫儿 + 4 神马都是浮云

查看全部评分

回复 使用道具 举报
应该存在资源浪费的问题吧
虽然不用关流最后还是会被关闭
但是那是jvm帮你关的    jvm不可能在你刚用完就帮你关掉而是等他有时间了在帮你关掉
所以没有自己手动关掉的节约资源
IO中基本上所有的流都是实现了closeable接口
个人理解

评分

参与人数 1黑马币 +2 收起 理由
枫儿 + 2 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马