什么是解析?
说到解析就要用python来举例,因为python就是一门动态解释型的编程语言,当开发者在编写python代码保存后,就会得到一个以“.py”为扩展名的文本文件,若要运行“.py”文件就要用python解析器将py文件逐行解析成能让计算机执行的机器代码。
什么是编译?
编译就是将一种源代码转换成另一种源代码,例如将'*.java'文件编译生成'.class',想要执行class文件就要jvm加载再次编译或解析成能让计算机执行的机器代码。
这也是为什么 python执行快,而java执行时需要等待一会;将python解析器比作自行车,而jvm就比作地铁,进地铁站坐地铁需要等待而自行车可以随骑。
运行同一段功能相同的代码,java为何要比python快呢?是因为jvm比python解析器强吗?是,但又不完全,还因为python是一种动态解析的弱语言,它不像java那样定义变量时需要指定数据类型;举个例子,在python中做一次整数加法和在java中做一次整数加法是完全不同的,当你在java中做整数加法时,判断数据类型和是否超出范围,特别的:当byte、char、short三种类型的变量做运算时,结果为int型;而python做加法运就需要各种校验了,下图就是python底层的加法校验