我现在的实现方法是java.util.Scannercin=newjava.util.Scanner(System.in);//Readdatafromstandardinstream.inti=cin.nextInt();//CloseScannercin.close();//*********************...
我现在的实现方法是
java.util.Scanner cin=new java.util.Scanner(System.in);
//Read data from standard in stream.
int i = cin.nextInt();
//Close Scanner
cin.close();//*********************
//Other operations.
return;
我就想知道,如果去掉加星的一行,IDE提示我资源泄露,这要紧吗?
在C++里设计良好的类都有完整的析构函数,像这样分配到栈里的对象都能及时正确析构,如果类的设计者在类的析构函数中写下了释放资源的代码,就无需客户代码显示释放资源了。
java好像不常有析构函数(因为垃圾收集),但这种close()没写真的会导致资源泄露吗?
如果System.in是标准输入流,那么close()会影响到它吗?
如果这些代码出现在某个递归函数中,会出现什么难以看到的问题吗?
C++转型Java新手,一些奇怪的问题还请海涵~
例如
private int GetInteger() {
Scanner cin = new Scanner(System.in);
boolean Loop = false;
int Temp;
do
try {
Loop=false;
Temp=cin.nextInt();
}
catch(InputMismatchException Exc)
{
Loop=true;
}
while(Loop);
cin.close();
return Temp;
}
正确吗?
展开