【问题标题】:Java Import PackageJava 导入包
【发布时间】:2015-01-09 13:02:39
【问题描述】:

我的问题是关于这段代码的:

import java.util.*;

有人告诉我这段代码将导入所有 Java 包,但我的问题是: 它会消耗更多内存吗?因为在我正在做的程序中,我只是在使用:

import java.util.Scanner;

import java.util.InputMismatchException;

感谢您的帮助。

【问题讨论】:

  • 这不会导入所有java包,而是java.util包中的所有java类。它不会消耗额外的运行时内存,因为它仅在编译期间相关。编译可能会慢一点,但几乎不会引起注意。
  • @geert3 这对我来说似乎是一个完整的答案 - 为什么要发表评论?
  • Java import vs code performance 的可能重复项

标签: java memory import package


【解决方案1】:

不,惰性导入对生成的程序没有影响。看到这个问题:Java import vs code performance

使用惰性导入与显式导入更多的是可读性问题。 (此外,如果您引用两个包中存在的类名,则需要显式导入来解决歧义。)

【讨论】:

    【解决方案2】:

    我被告知这段代码将导入所有 Java 包

    不,它只是告诉编译器当我们在代码中只使用像List这样的简单名称而不是全名java.util.List时它应该搜索哪些包的类/接口的详细信息(编译器需要将每个简单名称更改为它的完整名称)名称)。

    通常最好避免使用*,因为当少数包具有相同名称的类时,它可能会导致问题。例如让我们添加这个导入

    import java.util.*;
    import java.awt.*;
    

    并使用List。编译器将不知道我们在这里指的是哪个List(java.awt.List 或 java.util.List)并且会返回错误。我们可以通过添加

    来描述我们想要使用的 List 的精确位置来解决它
    import java.util.*;
    import java.awt.*;
    import java.util.List;// <-- solves List problem
    

    但为了避免此类问题,我们首先应尽量避免使用*,尤其是因为我们的 IDE 可以为我们生成导入。

    【讨论】:

      猜你喜欢
      • 2018-04-10
      • 1970-01-01
      • 2015-06-06
      • 1970-01-01
      • 1970-01-01
      • 2012-08-28
      • 2015-10-31
      • 2012-05-10
      • 1970-01-01
      相关资源
      最近更新 更多