当前位置: 首页 > 面试题库 >

在Java中,未使用的导入声明会占用内存吗?

南门新荣
2023-03-14
问题内容

是否执行未使用的导入- 导入android.widget.RelativeLayout;
吃记忆?只想知道它的价值或价值?也许这是愚蠢的问题,但是我还没有找到答案。


问题答案:

不,他们不占用任何内存。导入仅由编译器用来在编译时解析类名称。

编译器将每个类名称更改为完全限定名称。并删除导入语句。因此,import语句不会使其成为字节码。

通配符导入可能出现的唯一问题是名称空间冲突,即,在两个不同的程序包中定义了具有相同名称的两种类型时,然后导入这些具有通配符的程序包将导致所用该类型的名称冲突。

要查看编​​译器如何替换import语句,可以使用javap命令生成类的字节码。考虑下面的代码:

import java.util.*;
import java.util.regex.*;

public class Test {
    public static void main(String[] args) {

    }
}

只需编译以上代码,并使用以下命令检查字节码:

javap Test

它给出以下输出:

public class Test {
  public Test();
  public static void main(java.lang.String[]);
}

因此,您可以看到该String类型已被其全限定名替换java.lang.String,并且字节码中没有import语句。



 类似资料:
  • 10.4. 导入声明 可以在一个Go语言源文件包声明语句之后,其它非导入声明语句之前,包含零到多个导入包声明语句。每个导入声明可以单独指定一个导入路径,也可以通过圆括号同时导入多个导入路径。下面两个导入形式是等价的,但是第二种形式更为常见。 import "fmt" import "os" import ( "fmt" "os" ) 导入的包之间可以通过添加空行来分组;通常将来

  • 【内存占用】页面主要展示项目运行过程中内存的使用情况,主要包括以下几个部分: 数据汇总 该项主要展示项目运行过程中的 “总内存峰值”、“堆内存峰值”、“GFX内存峰值” 和 “泄露风险”。其中,总内存为Unity引擎所统计的真实物理内存分配,并不包含系统缓存和第三方库的自身分配内存; 堆内存所指的是 Mono 管理和分配的托管堆内存; GFX内存为用于渲染的资源所占用的内存,主要包括纹理资源、网格

  • 问题内容: 在Java中,声明有两种有效形式: 在后者中,使用通配符。这种形式称为按需输入类型声明,但是它与前一种有何不同?是否还会导入的子包? 如果是Type( 例如 ,类)怎么办?将其所有内部类都导入吗? 问题答案: 仅导入立即嵌套的类型。该声明不是递归的。 这确实适用于用于导入内部类的类型,也适用于静态导入(用于导入方法)。

  • 这是我的代码。我试图让用户输入选择变量a、b和c的值,这样程序就可以运行方程。数学工作,但是我在第一次输入后得到一个错误。

  • 问题内容: Xcode 8 beta 4不再识别Foundation类。 我在一个简单的操场示例中复制了它: 由于在较早的Xcode 8 Swift 3 Beta中可用,我想这是一个需要修复的错误,而不是Playground中的某些源代码错误? 问题答案: 尽管未在Xcode发行说明中记录,但Swift Foundation中对Swift进化建议SE-0086 Drop NS Prefix 的第2

  • 我在学校开始学习数据结构,我有一个家庭作业,我必须实现一个二叉搜索树,并告诉数据结构占用的内存。 第二个问题。假设我从10000个键中插入25000个条目。每次插入都将递归地使用,直到新节点找到它的“位置”。如何计算占用的内存?