先编译后执行边执行边编译
A. java的解释执行是先全部解释完后再执行还是边解释边执行
它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。Java语言是解释型的。如前所述,Java程序在Java平台上被编译为字节码格式,然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。既然Java语言是解释型的,那它就是边解释边执行咯 补充: 不过,虽然java是解释型的语言,但是在不同的平台环境上的java虚拟机也是会有一次性解释然后执行的情况的!!! 追问: java程序在一个平台上被解释成了二进制目标代码,退出java程序后,再运行java程序时,还需要再次解释吗?如果需要再次解释,就显得浪费资源;不再次解释,程序就不能“一次编写,到处运行”。 回答: 就hotspot虚拟机而言,有两种模式,一是-client,二是-server -client模式下,是逐条解释执行的 -server模式下,先解释执行,然后jvm统计执行热点,将这些热点代码仔细优化编译成本地代码,然后执行本地代码,当这个热点不再是热点的时候,释放编译的代码,重新解释执行 其它的jvm可能在一启动的时候就全部编译成本地代码 总之,JVM会自行优化!
B. 请教什么是“解释执行”,什么是“编译后执行”:
解释执行就是把你的程序一句一句的执行。
编译执行是这个开放环境(也可以说是这个语言)它自带了一个编译器。编写好的代码首先被编译程汇编语言或者是机器语言,然后执行。多用在高级语言上。
所以解释执行一般比编译执行效率高。
没有说反。语言越低级,越靠近机器,执行效率就会越高。
C. C++运行前要经过什么步骤,先编译,再链接最后运行
你说的没错。但现在的开发环境一般是集成化的,可以编译、连接、执行一起在IDE(集成开发环境)中连续运行,不需要任何命令,鼠标点“运行”即可。
D. 编译后的程序比边解释边执行的程序的运行速度快吗为什么
程序的编译是指将人可以理解的代码(如C的源代码)段编译成机器指令码(二级制指令),也就是处理堆栈、处理器、总线的指令,交由计算机自动执行。解释型语言是在需要执行时临时编译运行,执行时多了编译的过程,自然就要慢的多了。
比较特殊的是java,javac命令编译的结果虽然也是二进制文件,但实际也不是机器指令,而是优化后的代码,最后的执行是通过java虚拟机再次编译后执行。所以效率介于编译型和解释型之间。
目前java的执行速度已经有了大幅度的提升,但要想赶上或超越C 或者汇编,理论上是不现实的。
E. 执行C语言一定要先编译么,不可以直接执行么
一般来说编译过后就成了基本上能执行的2进制代码。但是这些2进制代码并不完善,一个程序往往需要调用不止一部分的代码,所以需要把这些代码全部整合起来才能执行。
即时你的程序看起来只有一个文件,但是编译过后,多多少少里面至少会调用到一些操作系统功能,和其它的一些设置,所以依然需要组建这个过程把这个程序和这些系统默认的代码组建起来形成一个完成、单一的可执行文件。所以一般组建过程就包含了组建内部和外部代码,一般来说内部代码就是我说的系统预留的必要的一些代码(例如怎么具体完成把一些字符显示在屏幕上呀这些功能),而外部代码就是额外的调用自己写得或者别人写得其它程序功能(往往当你的程序调用了非c标准函数的时候)。
所以就算你的代码可以编译,但是可能因为组建并不成功(例如需要组建的代码本身有bug,或者丢失,或者版本不匹配),你的程序依然可能无法正确运行。
F. C语言既可以编译执行又可以解释执行吗 编译执行怎么解释 解释执行又怎么解释
C 语言程序仅可以解释执行。
解释程序是将源程序(如BASIC)作为输入,解释一句后就提交计算机执行一句,并不形成目标程序。编译程序是把高级语言(如FORTRAN、COBOL、Pascal、C等)源程序作为输入,进行翻译转换,产生出机器语言的目标程序,然后再让计算机执行这个目标程序,得到计算结果。
相对于编译性语言,其优点是可移植性好,只要有解释器环境,程序就可以在不同的操作系统上运行。
缺点是代码需要有专门的解释器,在程序运行时,除要给用户程序本身分配内存空间外,解释器也占用系统资源,所以其运行速度较慢。另外,也很难达到像C、C++那样操作系统底层操作的目的。
解释型语言常用于,一是对运行速度要求不高(如一些网页脚本等)的场合,二是对跨平台(操作系统的兼容性)有要求的场合。
(6)先编译后执行边执行边编译扩展阅读
1、Python和Java语言,专门有一个解释器能够直接执行Python程序,每个语句都是执行的时候才翻译。
2、Python代码在运行前,会先编译成中间代码,每个 .py 文件将被换转成pyc 文件,pyc 就是一种字节码文件,它是与平台无关的中间代码。不管放在 Windows 还是 Linux 平台都可以执行,运行时将由虚拟机逐行把字节码翻译成目标代码。
G. SQL语句在PL/SQL编译是从后往前执行,那真的执行的时候了大虾解释下
(8) SELECT (9) DISTINCT (11) <TOP_specification> <select_list>
(1) FROM <left_table>
(3) <join_type> JOIN <right_table>
(2) ON <join_condition>
(4) WHERE <where_condition>
(5) GROUP BY <group_by_list>
(6) WITH {CUBE | ROLLUP}
(7) HAVING <having_condition>
(10) ORDER BY <order_by_list>
这是执行顺序
顺序查询:根据表的某个(些)字段重排记录,进行顺序查询时,要先排序以提高查询效率。
顺序查询,会以主键作为默认的索引进行查询,如果没有主键和索引,就以第一个字段,进行排序,进行查询。
索引查询:按照某个关键字(或其表达式)来建立记录的逻辑顺序。
索引查询,已索引的顺序为条件,找到索引对应的记录,得到查询的结果集。
先答这么多,明天我去问下DBA
H. 编译执行和解释执行的区别
一、主体不同
1、编译执行:由编译程序将目标代码一次性编译成目标程序,再由机器运行目标程序。
2、解释执行:将源语言直接作为源程序输入,解释执行解释一句后就提交计算机执行一句,并不形成目标程序。
二、优势不同
1、编译执行:相比解释执行编译执行效率高,占用资源小,适合复杂程序
2、解释执行:开发速度快,出现严重BUG的几率小。
三、缺点不同
1、编译执行:兼容性差,例如在windows平台上写的编译程序一般不可以在unix平台上运行。
2、解释执行:解析需要时间,不生成目标程序而是一句一句的执行的方式会造成计算机资源的浪费,即执行效率低。
I. java既然是先编译,然后再执行编译后的字节码文件,那是不是在编译后就可以删除源文件了
理论上是的,你第一步的 javac 将你的 .java 文件 编译成 .class 字节码,之后 用 java 命令来运行 .class 文件。所以是可以删掉源文件,但是一般程序都是要调试,调试后你的源文件就要变动,变动后就要重新编译,所以一般没人删源文件,然后再重新写一份。
J. C#程序不是一次编译后执行了,而是编译成中间代码,在。net环境由JIA编译器边编辑边执行是什么意思
c#和c++不同,c++是完全编译的,不需要特别的辅助容器就可以直接运行,c#和vb等等不是完全编译的程序,是一种解释性程序,源代码一般只能编译成一种中间语言(MSIL)然后在.net对应版本的容器中执行(.net framework),也就死c #程序的执行要依靠framwork的解释才能执行