为什么需要关闭Scanner类对象而字符串类对象不能?
为什么它显示对象的警告UNUSED
:
String obj = new String();
并且无法关闭:
Scanner sc = new Scanner(System.in);
答案 0 :(得分:2)
扫描程序可以保存对资源的引用(在您的情况下,它是标准输入流)。需要首先打开,然后才能读取。
因此,要使用相同的底层资源而不出现任何问题,您需要将其关闭。因此,下一次打开调用不会被阻止,所做的修改(如果有的话)不会破坏资源。
您无法关闭String
,因为它不指向任何IO资源,如文件或流。它指向一个String对象。在你的房子里,你可以关闭门,但是你可以关闭椅子吗?
为什么显示对象的警告UNUSED:
创建但未使用的任何对象都是未使用的对象。
答案 1 :(得分:1)
为什么Scanner类对象需要关闭而字符串类对象不能
扫描程序保持对inputStream之类的资源的引用,应该关闭它。字符串不会那样做。
为什么显示对象
的警告UNUSED
因为您声明了对象但从未使用它来读取值。