导入类和使用具有完整类名的引用之间是否有任何性能或内存改进?

ast*_*eri 1 java memory performance class

我想知道以下实现之间是否有任何区别:

import java.util.Date;

public class SimpleDatePrinter {

    public void printDate() {
        System.out.println(new Date());
    }

}
Run Code Online (Sandbox Code Playgroud)

......而且......

public class SimpleDatePrinter {

    public void printDate() {
        System.out.println(new java.util.Date());
    }

}
Run Code Online (Sandbox Code Playgroud)

我问的原因是因为我对C++ include语句的理解是包含文件的内容基本上在编译时被复制到源文件中.我不确定importJava中的语句是否以相同的方式工作,但是如果他们这样做,那么使用上面显示的第二种结构可能会节省内存(因为你没有import将整个java.util.Date类放入SimpleDatePrinter?或者这是不相关的?

我意识到在不导入类的情况下编写代码会对可读性和诸如此类的东西产生不利影响.我也意识到,在上面的例子中,"不足以担心".我只是对性能是关键因素的情况感到好奇.

san*_*hat 5

不,没有区别.import语句用于避免使用我们正在使用的类的完全限定名称.该文档没有谈论有关性能改进的任何内容


ass*_*ias 5

导入在编译时解决.在您的示例中,生成的字节码将是相同的.并且在运行时,无论如何都需要加载类(Date).因此,从性能角度来看,它没有任何区别.