java class文件和二进制文件

jerryq0323 2018-03-21 03:42:52
有个疑惑:class文件是二进制文件,但是打开class之后看到包括有CAFEBABE(咖啡宝贝)等内容,就很疑惑。我以为等二进制文件就是只有0,1这样等文件,那为什么class文件也被称为是二进制文件?
...全文
915 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_39936465 2018-04-04
  • 打赏
  • 举报
回复
不管你打开什么二进制文件都不会看到0或1的,因为阅读不方便一般显示为16进制,二进制文件是给机器看的,提高机器执行效率,不是给人看的,你只能脑补二进制数,根据16进制数字转化为2进制。
maradona1984 2018-03-22
  • 打赏
  • 举报
回复
引用 2 楼 weixin_39537927 的回复:
嗯 谢谢您的回答。但是我还是有些疑惑。 我是在看 深入理解java虚拟机这本书的时候 跟着书上的讲解类文件结构的时候,看到书上对class文件的描述是 是一个字节码文件,特定的二进制文件。 额,想请问什么是字节码文件? 然后我用UltraEdit打开class文件 看到是16进制的内容,我觉得class文件的文件内容应该就是这种16进制的内容,我也知道这个文件在通过计算机打开之后呈现的虽然是16进制的内容,但文件本身肯定是0,1组成的文件,但既然说也是二进制文件那为什么class文件还需要通过虚拟机加载,成为机器码(我理解的是java代码通过java编译器编译成class文件,然后class文件加载到虚拟机变为计算机可直接执行的0,1的机器码,我理解的是这样 不知道对不对)? 谢谢您的回答,也希望指正。
因为java宣称一处编译到处运行,所以只能编译成JVM认得的字节码,然后可以复制编译后的文件到各种类型的机器上执行 你再问深点我也是不懂的
jerryq0323 2018-03-22
  • 打赏
  • 举报
回复
好的 谢谢您的回答
jerryq0323 2018-03-21
  • 打赏
  • 举报
回复
网上偶然看到一个对字节码文件对解释,不知道这么描述正确与否,希望指正:字节码文件是经过编译器预处理过的一种文件,是JAVA的执行文件存在形式,它本身是二进制文件,但是不可以被系统直接执行,而是需要虚拟机解释执行,由于被预处理过,所以比一般的解释代码要快,但是仍然会比系统直接执行的慢。
jerryq0323 2018-03-21
  • 打赏
  • 举报
回复
jerryq0323 2018-03-21
  • 打赏
  • 举报
回复
嗯 谢谢您的回答。但是我还是有些疑惑。 我是在看 深入理解java虚拟机这本书的时候 跟着书上的讲解类文件结构的时候,看到书上对class文件的描述是 是一个字节码文件,特定的二进制文件。 额,想请问什么是字节码文件? 然后我用UltraEdit打开class文件 看到是16进制的内容,我觉得class文件的文件内容应该就是这种16进制的内容,我也知道这个文件在通过计算机打开之后呈现的虽然是16进制的内容,但文件本身肯定是0,1组成的文件,但既然说也是二进制文件那为什么class文件还需要通过虚拟机加载,成为机器码(我理解的是java代码通过java编译器编译成class文件,然后class文件加载到虚拟机变为计算机可直接执行的0,1的机器码,我理解的是这样 不知道对不对)? 谢谢您的回答,也希望指正。
maradona1984 2018-03-21
  • 打赏
  • 举报
回复
你应该换个打开二进制文件的软件,比如UltraEdit,notepad++(得装插件)或者其他,当然他们看到的应该是16进制的,你自行脑补成二进制吧 话说所有软件都是二进制文件,但你用文本编辑器打开自然是根据字符集转码而来的

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧