作用:

编译时:它只是进行语法检查和格式转换;与头文件作用相同。

运行时:依赖类加载。

http://bbs.csdn.net/topics/390397328

前面说的java的编译,这里纠正一下,我是参照c++将源文件编译成机器码这个过程而言,也就是说,我前面说的java编译是特指转换成机器码这个过程。

1,java为了屏蔽平台无关性而使用了java虚拟机,而虚拟机本身是与平台有关的,就是我们平时看到的windows版本和linux版本而且还有32位和64位之分,但作为一个开发者,我们写代码时很少考虑到这些。
2,正是由于要经历虚拟机,所以java的编译可以看作分为两个步骤进行:前端编译(javac)和后端编译(JIT)。当然现在也有一步到位的编译器。
3,我们通常所说的java编译大多是指前面编译,也就是前面提到的,将java源文件转换成jvm规范的一种格式,虽然它也是二进制的,但是它只能被虚拟机所识别。但是我们知道,java虚拟机其实并不是只能执行由java语言写成的代码,它也可以执行groovy, jpython这样的语言写成的源码,这些源码都会经历前端编译。前面编译不会做链接工作,它只是进行语法检查和格式转换。
4,早期的虚拟机会以解释执行的方式来执行代码,我们都知道,解释执行的性能是没有编译执行快的,这也是为什么总是说java慢的原因。后来java加入即时编译器(JIT)使得java可以以解释执行和编译执行两种方式来执行代码。这一阶段,我们可以称之为后端编译。在这个时候,虚拟机将class文件编译成机器码,并链接其它文件。

所以从这个角度来看,import在前端编译时,不会做什么实质性的事情,只是一个标识而已。在后端编译时,虚拟机会根据所需要的类优化导入,据说JIT可以在运行进搜集到更多的信息从而可以编译出在性能上可以达到甚至超过c++的机器码。

Java中的Import语句如何理解?的更多相关文章

  1. Java中关于static语句块的理解

    Java中关于static语句块的理解 一.static块会在类被加载的时候执行且仅会被执行一次,一般用来初始化静态变量和调用静态方法. 实例一 public class A{ String name ...

  2. Python中的import语句

    Python中的import语句是导入一个文件,这条语句主要做三件事: 1 通过一定的方式,搜寻要导入的文件: 2 如果需要,就编译这个文件: 3 运行这个文件 但是,需要注意的是,所有这三个步骤,都 ...

  3. Java中的return语句使用总结

    Java中的return语句总是和方法有密切关系,return语句总是用在方法中,有两个作用,一个是返回方法指定类型的值(这个值总是确定的),一个是结束方法的执行(仅仅一个return语句).   在 ...

  4. Java中的switch语句后面的控制表达式的数据类型

    Java中的switch语句后面的控制表达式的数据类型 1.byte 2.char 3.short 4.int 5.枚举类型 6.Java 7允许java.lang.String类型

  5. Java中return的语句

    1.return语句的作用:a.返回一个值,这个值可以是任意类型.b.使程序返回到操作系统(即终止程序)2.java中对于一个函数,不论有没有返回值类型,都可以带有return 语句.但是区别在于,r ...

  6. java中容器的学习与理解

    以前一直对于java中容器的概念不理解,虽然学习过,但始终没有认真理解过,这几天老师提出了这样一个问题,你怎么理解java中的容器.瞬间就蒙了.于是各种搜资料学习了一下,下面是我学习后整理出来的的一些 ...

  7. Java中的if-else语句——通过示例学习Java编程(7)

      作者:CHAITANYA SINGH 来源:https://www.koofun.com/pro/kfpostsdetail?kfpostsid=18 当我们需要根据一个条件执行一组语句时,我们需 ...

  8. 2017.12.25 Java中面向对象思想的深刻理解

    今日内容介绍 1.面向对象思想 2.类与对象的关系 3.局部变量和成员变量的关系 4.封装思想 5.private,this关键字 6.随机点名器 01面向对象和面向过程的思想 * A: 面向过程与面 ...

  9. java 中for each语句

    [转]java foreach 使用   foreach语句是java5的新特征之一,在遍历数组.集合方面,foreach为开发人员提供了极大的方便.   foreach语句是for语句的特殊简化版本 ...

随机推荐

  1. 2019 ICPC 银川站

    I. Base62(高精度进制转换) 比赛当时雷菊苣和队长俩人拿着大数板子摸了一百多行(然后在缺少大数板子的情况下雷菊苣一发过了orz) 今天补题随便摸了个高精度进制转换的板子交上去就过了还贼短,, ...

  2. MODBUS 数据格式相关记录

    串口通讯格式: 串口通讯可以分为同步通讯(Synchronous)和异步通讯(Asynchronous).同步通讯时有一根时钟信号,数据格式中没有起始位和停止位:异步通讯中没有时钟信号,数据格式中包含 ...

  3. vue nexttick的理解和使用场景

    应用场景 需要在视图更新之后,基于新的视图进行操作 文档说明 在下次 DOM 更新循环结束之后执行延迟回调.在修改数据之后立即使用这个方法,获取更新后的 DOM nextTick原理 1.异步说明 V ...

  4. 【题解】Luogu P5468 [NOI2019]回家路线

    原题传送门 前置芝士:斜率优化 不会的可以去杜神博客学 这道题我考场上只会拆点跑最短路的70pts做法 后来回家后发现错误的爆搜都能拿满分(刀片) 还有很多人\(O(mt)\)过的,还是要坚持写正解好 ...

  5. Codeforces Round #557 (Div. 1) 简要题解

    Codeforces Round #557 (Div. 1) 简要题解 codeforces A. Hide and Seek 枚举起始位置\(a\),如果\(a\)未在序列中出现,则对答案有\(2\ ...

  6. 订单BOM与销售BOM的区别

    訂單BOM: 是實際生產時用的BOM, 在標準BOM和銷售BOM基礎上增減物料的BOM 銷售BOM: 是為特定客戶設定的BOM, 在主檔數據層次上的BOM, 在生產時是帶到訂單BOM中去的. 標準BO ...

  7. html 显示 pdf

    html 显示 pdf文件四种方式: 1. <embed src="pdf/wobu.pdf" type="application/pdf" width= ...

  8. CentOS7 firewalld防火墙 启动 关闭 禁用 添加删除规则等 常用命令

    CentOS7 firewalld防火墙 常用命令1.firewalld的基本使用启动: systemctl start firewalld关闭: systemctl stop firewalld查看 ...

  9. Javascript中创建函数的几种方法

    // 工厂函数模式 // 无法解决对象识别问题 function person0(name, age, job) { var obj = new Object(); obj.name = name; ...

  10. vue学习整理

    1.webpack+vue自定义路径别名 vue-cli 用的是webpack,也可以使用webpack自定义别名这个功能,自定义别名这个功能当你在多层文件夹嵌套的时候不必一层一层找路径,直接使用自定 ...