gpt4 book ai didi

java - 关闭扫描器是强制性的吗?

转载 作者:搜寻专家 更新时间:2023-10-31 19:54:35 24 4
gpt4 key购买 nike

使用下面的代码,无论是否使用扫描仪关闭方法,我都能够产生相同的输出。

import java.util.Scanner;
class CheckPassFail
{
//Write a program called CheckPassFail which prints "PASS" if the int variable "mark" is more than or equal to 50; or prints "FAIL" otherwise.
static int k;
static String str;
public static void main(String arg[])
{
System.out.println("Enter the marks : ");
Scanner typein = new Scanner(System.in);
str = typein.nextLine();
typein.close(); //Scanner Close
k = Integer.parseInt(str);
if(k>=50)
{
System.out.println("PASS");
}
else
{
System.out.println("FAIL");
}
}
}

最佳答案

简短回答:,但在许多情况下非常建议这样做。

扫描仪在某种资源上工作。这可以是 String,但在许多情况下,它可以是标准输入 channel 、文件、网络流或其他资源。

对于 stdin,这不是什么大问题。 stdin 通常与您的应用程序一起存在(和消亡)。最好不要关闭流,因为也许另一个对象有兴趣从标准输入 channel 读取数据。

但是,如果您从文件/网络/驱动程序/...读取,这意味着 Java 已首先询问操作系统是否可以使用该资源。这意味着资源已分配给应用程序。其他希望写入文件(或读取和写入以防您的程序写入文件)的应用程序被(至少是暂时的)拒绝访问该资源。因此,尽快放弃资源很有趣。

然而,最后一个方面不是必须的。 Java 虚拟机将在其终止/垃圾收集器经过时关闭程序不再可访问的资源。此外,如果您的 Java 应用程序被您、另一个程序...杀死(终止),操作系统肯定会释放资源。

然而,尽快放弃资源是有礼貌的(不要从字面上理解它,如果你在几(毫秒)秒后释放它们,这不是一个大问题)。此外,不及早放弃资源可能会使系统陷入死锁活锁。在死锁的情况下,两个程序正在等待一个资源再次可用,同时持有另一个资源。由于没有程序放弃自己的资源,程序将永远等待。如果出现这种情况,系统会卡住。

最后, Activity 资源也会导致额外的内存/CPU 使用。毕竟操作系统管理这些资源,所以可以合理地假设管理它们,它们将使用少量的 CPU。在许多情况下, Activity 文件被(部分)加载到内存中。网络资源也是如此,...总的来说占用空间不是很大,但你可以想象如果所有程序都保留资源直到它们终止,这将产生很大的影响。

关于java - 关闭扫描器是强制性的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28976492/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com