JVM---字节码

计算机中信息以01二进制来记录信息。为了让人能读懂,在查看文件的时候会按照对应的字典(ASCII,UTF-8,GBK)来翻译二进制信息。

如用记事本打开文件的时候就会按照ASCII编码格式来对文件信息解码展示出来。

所以文件有后缀名,就是给打开的工具看要以哪种方式来解码。

如txt,html,css,java,xml等等,这些文件的编码都符合某种文字编码规范,如上文提到的ASCII、Unicode、还有以前中文中经常使用的GB2312都可以解码成人能读懂的信息;
反之,如果文件的编码不符合任意一种文字编码规范,使用文本编辑器打开只能看到乱码,就可以认为它属于二进制文件。要想打开二进制文件,就必须要知道该文件所对应的编码规范,有些二进制文件使用通用的规范进行编码,比如常见的图片格式JPEG,音频格式MPEG-3,视频格式MPEG-4,而有些二进制文件的编码格式只有程序的开发者自己清楚,这样的文件对于普通的用户来说就几乎是保密的。
本质所有都是二进制,看到乱码只是解码的方式不对。
 
Java编译生成.class文件。后缀表明它的编码格式。用记事本打开也只能看到乱码,因为解码该二进制的方式不对。
class文件没有分隔符,每个位置代表什么、各个部分的长度等格式是 严格规定死的。

二进制01每4位可以换算成一个十六进制值,2个十六进制数值即8位二进制可表示一个字节(Byte)

16KB=16*1024Byte=16*1024*8bit

1字节=8比特,比特即二进制中一位数。

所以class中的二进制信息可以精简成十六进制来表示。字节码即这些十六进制所包含的信息(两位十六进制数为一字节)。

class文件即字节码,虚拟机可以按照class文件的严格格式规定来解码class文件,从而读取类信息。

扫描二维码关注公众号,回复: 10862333 查看本文章

https://www.zhihu.com/question/19971994

https://www.cnblogs.com/lilei94/p/9744331.html

猜你喜欢

转载自www.cnblogs.com/tommaoxiaoqi/p/12715491.html