一、什么是字节码
1. 先来说一下什么是机械码
机械码就是cpu能够直接读取并运行的代码,它是用二进制编码表示的,也叫做机械指令码。在编写这种代码时,需要主动地去控制cpu的一切资源,而且需要记住全部指令所做的动作,十分的麻烦,当然这也是计算机的底层代码,处理开发计算机的专业人员之外,已经很少人去研究了。
2.字节码
字节码是一种中间状态的二进制文件,是由源码编译过来的,可读性没有源码的高。cpu并不能直接读取字节码,在java中,字节码需要经过JVM转译成机械码之后,cpu才能读取并运行。
3.使用字节码的好处
一处编译,到处运行。java就是典型的使用字节码作为中间语言,在一个地方编译了源码,拿着.class文件就可以在各种计算机运行,每个计算机上的jvm就会有所不同了。
4.字节码在JVM中的状态
5.额外提一点
编译型语言
只需要编译一次,就能够将源代码编译成机械码。执行效率高,可移植性低,依赖编译器。
典型代表:C、C++、Pascal、Object-C以及最近很火的苹果新语言swift,GO
解释型语言
在第一次编译时,并不会直接将源代码编译成机械码,而是编译成一种中间状态的二进制文件(字节码),由虚拟机来对这个二进制文件进行第二次编译,这次才是编译成机械码。执行效率比编译型语言低,但是可移植性高,依赖虚拟机。
典型代表:JavaScript、Python、Erlang、PHP、Perl、Ruby
二、java中的字节码
1.查看字节码的方式
- 首先打开idea,在里面创建一个.java文件
package test;
public class ByteCodeTest {
private int a = 0;
public int get() {
return a;
}
}
然后在另一个类上,运行main方法,调用这个类
- 找到编译后的.class文件
out文件夹下面会多出一个我们刚刚编写的java文件相同名称的.cla