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语句的特殊简化版本 ...
随机推荐
- SQL Server ----- 生成sql 脚本
通过生成sql 脚本进行数据库转移 选中需要进行转移的数据库 点击生成脚本后出现 进入的是简介界面 直接点击下一步 进入到选择对象界面. 按照步骤进行设置 选择你需要的 架构和数据 ...
- js实现对上传图片的路径转成base64编码,并且对图片进行压缩,实现预览功能1
参考 https://blog.csdn.net/qq_31965515/article/details/82975381 https://www.cnblogs.com/zhangdiIT/p/78 ...
- Linux平台上常用到的c语言开发程序
Linux操作系统上大部分应用程序都是基于C语言开发的.小编将简单介绍Linux平台上常用的C语言开发程序. 一.C程序的结构1.函数 必须有一个且只能有一个主函数main(),主函数的名为main. ...
- SocketChannel简述
前言 在前面的Channel概述的分类中提到过SocketChannel主要是用来基于TCP通信的通道.这篇文章详细介绍下SocketChannel SocketChannel是什么 SocketCh ...
- Winows上简单配置使用kafka(.net使用)
一.kafka环境配置 1.jdk安装 安装文件:http://www.oracle.com/technetwork/java/javase/downloads/index.html 下载JDK安装完 ...
- Python 的 12 个学习方式
Python 是世界上最受欢迎的编程语言之一,它受到了全世界各地的开发者和创客的欢迎.大多数 Linux 和 MacOS 计算机都预装了某个版本的 Python,现在甚至一些 Windows 计算机供 ...
- cmd脚本
管道命令 | |命令的作用,就是让前一命令的输出当做后一命令的输入. > >会清除掉原有文件中的内容后把新的内容写入原文件: echo @echo off > a.bat. > ...
- English--consonant_摩擦音
consonant_摩擦音_[f]和[v].[s]和[z].[∫]和[ʒ] 摩擦音:理论上可以无限延长气流. [f]:噘嘴,上牙咬住下唇,送气,通过气流摩擦发音,声带不震动.knife.food.le ...
- delphi安装控件
设置路径,要不就自己把文件copy到对应的文件夹里面再给你装一下装控件的 http://www.cppfans.com/vclcontrol.asp有关 VCL 控件的常见问题 (安装.卸载.升级BC ...
- 工具sublime安装
默认安装后是英文版 view-show console 安装packagecontrol https://packagecontrol.io/installation ctrl+`打开控制台,输入代码 ...