之间有什么区别
Scanner keyboard= new Scanner(System.in);
int answer= keyboard.nextInt();
和
int answer= new Scanner(System.in).nextInt();
我是初学者,所以彻底的解释会有很大帮助。提前致谢!
答案 0 :(得分:1)
Scanner keyboard= new Scanner(System.in);
int answer= keyboard.nextInt();
在上面的代码中,在堆内存中创建了一个Scanner
对象,它的引用存储在一个名为keyboard
的变量中(keyboard
varible存储在堆栈内存中)。使用变量keyboard
,您可以在程序的任何位置访问Scanner
对象。
int answer= new Scanner(System.in).nextInt();
在第二个语句中,您正在创建也存储在堆内存中的对象,但该对象的引用不存储在任何变量中。因此,您无法再访问此对象。在此语句之后,堆内存中的对象已准备好进行垃圾回收,因为它的引用不再使用了。
答案 1 :(得分:0)
第一个语句初始化可以多次使用的Scanner对象。
第二个语句为该行代码创建一个新的Scanner对象。您需要在下次需要输入时调用新的Scanner对象。
创建变量比每次创建新对象更好。