import仅仅包含导入操作,并不包含将字节码文件加载进内存这一动作,将字节码文件加载进内存是后续的实例化操作完成的。

例如通过import导入了一堆包和类,但是后续什么都没用(没用实例化),那么导入的东西是不会被加载进内存的。

而且import是编译期的,如果你在后续代码中没有使用到你导入的内容,那么import语句甚至不会编译和执行。

查看字节码文件可以看出,import的作用就是对你程序中要用到(实例)的东西进行署名(signature),当程序运行的时候好知道你实例化的对象的类的字节码文件去哪里找。

而Class.forName方法包含的动作是:根据给出的全类名(方法的参数)找到对应的字节码文件,并将字节码文件通过ClassLoader加载进内存中生成Class类对象(方法的返回值就是Class类对象)。

这些就是二者的区别了。

Java中用import导入类和用Class方法加载类有什么区别?的更多相关文章

  1. 反射01 Class类的使用、动态加载类、类类型说明、获取类的信息

    0 Java反射机制 反射(Reflection)是 Java 的高级特性之一,是框架实现的基础. 0.1 定义 Java 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对 ...

  2. 【转】查看java类是从哪个包加载

    Java的类装载器使用的是优先策略,加载类的时候先找到哪个就加载哪个.有时候我们做一个系统,当类库非常庞大的时候,类可能会出现冲突,也就是类路径中存在不同版本的两个相同的类,这往往给调试带来非常大的麻 ...

  3. java动态加载类和静态加载类笔记

    JAVA中的静态加载类是编译时刻加载类  动态加载类指的是运行时刻加载类 二者有什么区别呢 举一个例子  现在我创建了一个类  实现的功能假设为通过传入的参数调用具体的类和方法 class offic ...

  4. Java虚拟机加载类

    Java虚拟机是如何加载Java类的 Java虚拟机加载Java类总共需要经过3步:加载-----链接-----初始化.Java语言的类型可以分为两大类:基本类型和引用类型.基本类型是有Java虚拟机 ...

  5. JVM总结-虚拟机加载类

    从 class 文件到内存中的类,按先后顺序需要经过加载.链接以及初始化三大步骤.其中,链接过程中同样需要验证:而内存中的类没有经过初始化,同样不能使用.那么,是否所有的 Java 类都需要经过这几步 ...

  6. [改善Java代码]使用forName动态加载类文件

    动态加载(Dynamic Loading)是指在程序运行时加载需要的类库文件,对Java程序来说,一般情况下,一个类文件在启动时或首次初始化时会被加载到内存中,而反射则可以在运行时再决定是否需要加载一 ...

  7. Java运行时动态加载类之ClassLoader

    https://blog.csdn.net/fjssharpsword/article/details/64922083 *************************************** ...

  8. Java动态加载类在功能模块开发中的作用

    Java中我们一般会使用new关键字实例化对象然后调用该对象所属类提供的方法来实现相应的功能,比如我们现在有个主类叫Web类这个类中能实现各种方法,比如用户注册.发送邮件等功能,代码如下: /* * ...

  9. java reflect 初始学习 动态加载类

    首先要理解Class类: 在java 的反射中,Class.forName("com.lilin.Office") 使用类的全名,这样获取,不仅仅表示了类的类类型,同时还代表着类的 ...

随机推荐

  1. ADB端口5037被占用 导致adb 停止工作

    解决ADB端口占用问题 方式一 5037为adb默认端口,若5037端口被占用,打开cmd,输入以下指令, 1.查看占用端口的进程PID  netstat -aon|findstr 5037 2. 通 ...

  2. C++ class外的==重载,判断相等,测试等于,重载示例。二元操作符

    #include <iostream> // overloading "operator == " outside class // == 是二元操作符 /////// ...

  3. C++ 标准库 std::npos 表示 size_t 的最大值

    参见:https://en.cppreference.com/w/cpp/algorithm/find std::npos 表示 size_t 的最大值,常用于对查找结果成功与否的判断. #inclu ...

  4. jwt, token, session和cookies

    jwt token,session和cookies

  5. angular设置全局变量,修改监听变量

    创建service.module.ts import { NgModule, ModuleWithProviders } from '@angular/core'; import { SomeShar ...

  6. oracle存储过程中拼接字符串及转义逗号

     在ORACLE中,单引号有两个作用,一是字符串是由单引号引用,二是转义.单引号的使用是就近配对,即就近原则.而在单引号充当转义角色时相对不好理解     1.从第二个单引号开始被视为转义符,如果第二 ...

  7. 微信小程序:使用wx.request()请求后台接收不到参数

    问题描述: 微信小程序:wx.request()请求后台接收不到参数,我通过wx.request()使用POST方式调用请求,参数传递不到后台 解决方案: Content-Type': 'applic ...

  8. Wamp 下运行 CGI 笔记

    虽然假期的余额不足了,但是仔细想想放假又有多少事情可以做呢?休息的差不多了,还是上班的好,长时间的休息人就废了.同意的举手,不同意的就算了. httpd.conf 的配置 我这里使用的是 Wamp 的 ...

  9. 【Java面试题】short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?

    昨天去面试,虽然体验不是很好, 但是看到了这个面试题,当时感觉无从下手,所以在这里记录一下. 解决这道题之前,先复习一下Java的基本数据类型转换规则,以便后面对面试题的理解. java的基本数据类型 ...

  10. EF操作与Linq写法记录

    项目总结:EF操作与Linq写法记录 1.EF引入 新建一个MVC项目之后,要引用EF框架,可以按照以下步骤进行: 1),在Models中添加项目 2),选择Entity Data Model,并重新 ...