0 0

class 中有些不被使用的import packages. 这些packages会有什么影响?5

在java class 中有些没被使用过的import packages. 这些packages会对性能有什么影响么?
这些没被使用的package会被classloader load么?谢谢!
OO 
2009年3月05日 12:27

2个答案 按时间排序 按投票排序

0 0

采纳的答案

其实import了之后没用的话跟JVM啊classloader什么的完全没关系。
import语句只在编译时有效,编译过后不会带到class文件里的。所以import了之后用了的类的信息才会出现在编译出来的class文件里,没用的则不会出现。

有兴趣可以自己动手试试。

//import java.util.regex.*;

public class Test {
    public static void main(String[] args) {
        System.out.println("test");
    }
}


那行import无论被注释掉还是没有被注释掉,编译出来的class文件的内容都是这样的:(javap -private -s -verbose Test)
Compiled from "Test.java"
public class Test extends java.lang.Object
  SourceFile: "Test.java"
  minor version: 0
  major version: 50
  Constant pool:
const #1 = Method	#6.#15;	//  java/lang/Object."<init>":()V
const #2 = Field	#16.#17;	//  java/lang/System.out:Ljava/io/PrintStream;
const #3 = String	#18;	//  test
const #4 = Method	#19.#20;	//  java/io/PrintStream.println:(Ljava/lang/String;)V
const #5 = class	#21;	//  Test
const #6 = class	#22;	//  java/lang/Object
const #7 = Asciz	<init>;
const #8 = Asciz	()V;
const #9 = Asciz	Code;
const #10 = Asciz	LineNumberTable;
const #11 = Asciz	main;
const #12 = Asciz	([Ljava/lang/String;)V;
const #13 = Asciz	SourceFile;
const #14 = Asciz	Test.java;
const #15 = NameAndType	#7:#8;//  "<init>":()V
const #16 = class	#23;	//  java/lang/System
const #17 = NameAndType	#24:#25;//  out:Ljava/io/PrintStream;
const #18 = Asciz	test;
const #19 = class	#26;	//  java/io/PrintStream
const #20 = NameAndType	#27:#28;//  println:(Ljava/lang/String;)V
const #21 = Asciz	Test;
const #22 = Asciz	java/lang/Object;
const #23 = Asciz	java/lang/System;
const #24 = Asciz	out;
const #25 = Asciz	Ljava/io/PrintStream;;
const #26 = Asciz	java/io/PrintStream;
const #27 = Asciz	println;
const #28 = Asciz	(Ljava/lang/String;)V;

{
public Test();
  Signature: ()V
  Code:
   Stack=1, Locals=1, Args_size=1
   0:	aload_0
   1:	invokespecial	#1; //Method java/lang/Object."<init>":()V
   4:	return
  LineNumberTable: 
   line 3: 0


public static void main(java.lang.String[]);
  Signature: ([Ljava/lang/String;)V
  Code:
   Stack=2, Locals=1, Args_size=1
   0:	getstatic	#2; //Field java/lang/System.out:Ljava/io/PrintStream;
   3:	ldc	#3; //String test
   5:	invokevirtual	#4; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
   8:	return
  LineNumberTable: 
   line 5: 0
   line 6: 8


}


所以别在意,import多余的东西不会对运行性能带来影响。JVM根本不知道你import了哪些类,只知道你用了哪些类。

import多余的东西主要带来的影响是污染了当前编译单元(也就是单个Java源代码文件)的命名空间而已,名字冲突的可能性变大了而已。例如说package A里有MyClass,你当前的文件在package B里,也有MyClass,这个时候直接写MyClass就容易有歧义,需要写成完整的A.MyClass或B.MyClass来区分。只是这个问题而已。

2009年3月05日 13:51
0 0

不会使用就不会被classloader load,你可以参考一下http://www.iteye.com/topic/332726,1.子系统(类装载在子系统)那部分

2009年3月05日 12:38

相关推荐

    Umbrello UML Modeller Handbook(PDF手册,英文)

    2.2.2.3.4 Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.2.3 Sequence Diagrams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.2.4 Collaboration Diagrams ...

    Word转pdf java实现

    2. 创建Word模板:使用Microsoft Word创建一个包含占位符的.docx文件,这些占位符将在转换时被替换。 3. 加载模板:使用`IRemportContext`加载模板文件。 4. 填充数据:使用FreeMarker模板引擎将数据绑定到模板的...

    spring-framework-reference4.1.4

    3.2. Removed Deprecated Packages and Methods .................................................... 17 3.3. Java 8 (as well as 6 and 7) .....................................................................

    spring-framework-reference-4.1.2

    3.2. Removed Deprecated Packages and Methods .................................................... 17 3.3. Java 8 (as well as 6 and 7) .....................................................................

    SystemVerilog Reference Manual 3.1a(中英文版)+最新SV IEEE 标准

    3.12 Class...............................................................................................................................................26 3.13 Singular and aggregate types .............

    docx4j项目(javadoc文档、源码及示例)

    import org.docx4j.openpackaging.packages.WordprocessingMLPackage; import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart; public class Docx4jExample { public static void main(String...

    python3.6.5参考手册 chm

    PEP 487: Simpler customization of class creation PEP 487: Descriptor Protocol Enhancements PEP 519: Adding a file system path protocol PEP 495: Local Time Disambiguation PEP 529: Change Windows ...

    JettyServer 例子

    在这个例子中,我们将探讨如何使用JettyServer创建一个简单的Web服务器。 首先,我们需要在项目中引入Jetty的依赖库。如果你的项目是基于Maven的,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org....

    Java结合docx4j生成docx文件

    在IT行业中,生成文档是日常工作中常见的任务,尤其在编程领域。Java作为一种广泛使用的编程语言,提供了多种方式来处理文档生成。本篇文章将深入探讨如何使用Java结合docx4j库来创建和操作Microsoft Word的.docx...

    MySQL 5.6 Reference Manual

    Table of Contents Preface, Notes, Licenses . . . . . . . . ....1. Licenses for Third-Party Components ....1.1. FindGTest.cmake License ....1.2. LPeg Library License ....1.3. LuaFileSystem Library License ....

    Doctrine ORM for PHP.pdf

    Require Doctrine Base Class..............................................................................................21 Register Autoloader............................................................

    贪吃蛇游戏源码

    1. **导入包(Import Packages)** - `import java.awt.Graphics;` - `Graphics` 类是用于在屏幕上绘制基本图形的工具类。 - `import java.awt.Toolkit;` - `Toolkit` 类提供了一些基本的工具方法,如获取屏幕...

    jdbc连接sqlserver数据库

    为了让命令行工具可以在任何位置被调用,需要将其添加到系统的环境变量中: ```bash [root@localhost/]# echo 'export PATH="$PATH:/opt/mssql-tools/bin"' &gt;&gt; ~/.bash_profile [root@localhost/]# source ~/.bash_...

    EurekaLog_7.5.0.0_Enterprise

    32)..Changed: Descriptions of EurekaLog project options now list corresponding property names of TEurekaModuleOptions class. 33)..Changed: Default template of ...

    docx4j根据书签替换word中的内容

    在IT行业中,尤其是在文档处理领域,`docx4j`是一个非常重要的库,它允许开发者通过编程方式操作Microsoft Office Open XML(OOXML)格式的文件,如.docx、.xlsx和.pptx等。本篇将详细介绍如何使用`docx4j`根据书签...

    java如何与脚本(javaScript)之间相互调用二

    标题“Java如何与脚本(JavaScript)之间相互调用二”主要探讨的是在Java应用程序中如何集成和调用JavaScript代码,以及反过来JavaScript如何调用Java的功能。这涉及到跨语言交互的技术,通常通过Java的ScriptEngine...

    利用Jetty服务器开发web应用例程

    通过阅读和理解这些代码,你可以更好地掌握如何在实际项目中使用Jetty。 总结一下,Jetty作为一个强大的Servlet容器,提供了轻量级、快速和灵活的Web应用开发环境。通过学习如何配置和运行Jetty服务器,以及如何...

    ReactNative调原生Android代码

    在这个例子中,当用户点击按钮时,`buttonPressHandler`函数会被触发,从而调用Android原生的`nativeFunction()`方法。记得在JavaScript代码中同步Android编译后的改动,通常通过`npx react-native run-android`命令...

    elasticsearch数据库下载、配置、使用案例&项目源码

    ### Elasticsearch 数据库下载、配置与使用案例详解 #### 一、Elasticsearch 概述 Elasticsearch 是一款基于 Lucene 开发的分布式、RESTful 风格的搜索和分析引擎,它能够处理大量的数据并提供快速的搜索响应。...

Global site tag (gtag.js) - Google Analytics