Java中的Import语句如何理解?
作用:
编译时:它只是进行语法检查和格式转换;与头文件作用相同。
运行时:依赖类加载。
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语句如何理解?的更多相关文章
- Java中关于static语句块的理解
Java中关于static语句块的理解 一.static块会在类被加载的时候执行且仅会被执行一次,一般用来初始化静态变量和调用静态方法. 实例一 public class A{ String name ...
- Python中的import语句
Python中的import语句是导入一个文件,这条语句主要做三件事: 1 通过一定的方式,搜寻要导入的文件: 2 如果需要,就编译这个文件: 3 运行这个文件 但是,需要注意的是,所有这三个步骤,都 ...
- Java中的return语句使用总结
Java中的return语句总是和方法有密切关系,return语句总是用在方法中,有两个作用,一个是返回方法指定类型的值(这个值总是确定的),一个是结束方法的执行(仅仅一个return语句). 在 ...
- Java中的switch语句后面的控制表达式的数据类型
Java中的switch语句后面的控制表达式的数据类型 1.byte 2.char 3.short 4.int 5.枚举类型 6.Java 7允许java.lang.String类型
- Java中return的语句
1.return语句的作用:a.返回一个值,这个值可以是任意类型.b.使程序返回到操作系统(即终止程序)2.java中对于一个函数,不论有没有返回值类型,都可以带有return 语句.但是区别在于,r ...
- java中容器的学习与理解
以前一直对于java中容器的概念不理解,虽然学习过,但始终没有认真理解过,这几天老师提出了这样一个问题,你怎么理解java中的容器.瞬间就蒙了.于是各种搜资料学习了一下,下面是我学习后整理出来的的一些 ...
- Java中的if-else语句——通过示例学习Java编程(7)
作者:CHAITANYA SINGH 来源:https://www.koofun.com/pro/kfpostsdetail?kfpostsid=18 当我们需要根据一个条件执行一组语句时,我们需 ...
- 2017.12.25 Java中面向对象思想的深刻理解
今日内容介绍 1.面向对象思想 2.类与对象的关系 3.局部变量和成员变量的关系 4.封装思想 5.private,this关键字 6.随机点名器 01面向对象和面向过程的思想 * A: 面向过程与面 ...
- java 中for each语句
[转]java foreach 使用 foreach语句是java5的新特征之一,在遍历数组.集合方面,foreach为开发人员提供了极大的方便. foreach语句是for语句的特殊简化版本 ...
随机推荐
- 给电脑提升权限---- 切换为administrator
在装系统的时候我们都会在安装的时候进行创建用户这一操作,安装软件的时候总会出现权限不足的情况, 个人建议:如果你要是比较会使用电脑的话,可以体验一下超级管理员这一角色, 就是安装好了之后,切换为超级管 ...
- 程序员不装x能行?先给登录来一个图形验证码!(canvas实现)
细心的同学可以发现,现在很多网站当登录多次之后就会出现一个图形验证码,或是当提交表单.或点击获取手机验证码等等场景都会有图形验证码的出现. 那么图形验证码是为了解决什么问题而出现的呢? 什么是图形验证 ...
- AQS原理解析 AbstractQueuedSynchronizer
AQS实现原理 https://blog.csdn.net/ym123456677/article/details/80381354 https://www.cnblogs.com/keleli ...
- React 父/子窗体参数传递
1.父窗体 import Modal from './Modal' onModalRef = ref => { this.modal = ref } onCallback = msg => ...
- “分而治之”,一种AI和动画系统的架构
译者注:随着国内游戏研发水平的不断提高,对画面品质的不断提升,同时大量手游使用Unity和Unreal 4等成熟的工具开发,动作状态机已经不是什么陌生的概念了.我们在项目开发时也大量使用了动作状态机. ...
- C++之拷贝控制 (Copy Control)
只有2种成员 值成员: 指针成员: 依实现可分为raw pointer / shared_ptr; 现在,仅考虑第③种:资源对象共享 角度来考虑拷贝控制 类的两种语义:值语义.似指针 编译器提供的de ...
- 2019 珍岛java面试笔试题 (含面试题解析)
本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.珍岛等公司offer,岗位是Java后端开发,因为发展原因最终选择去了珍岛,入职一年时间了,也成为了面试官,之 ...
- Django--模型层进阶
目录 QuerySet对象 可切片 可迭代 惰性查询 缓存机制 何时查询集不会被缓存? exists()与iterator()方法 exists() iterator() 中介模型 查询优化 表数据 ...
- ObjC: 源文件的组织
转自:http://marshal.easymorse.com/tech/objc-%e6%ba%90%e6%96%87%e4%bb%b6%e7%9a%84%e7%bb%84%e7%bb%87 最简单 ...
- AI面试-算法结构基础
其实目前国内几乎只要是技术岗,面试中都100%会问算法和数据结构. 这两者能快速体现候选人真实的水平,比如代码量,代码的质量,性能,思维是否有逻辑,是否灵活. 算法结果概述 1.前言 1.应用范围:机 ...