1
wwti9 2019-09-24 21:33:32 +08:00 1
因为不是
|
2
amiwrong123 OP @wwti9
那可以说成,符合 jvm 规范的 0101 吗 |
3
ooops 2019-09-24 21:43:26 +08:00 9
所以问问题之前为什么不搜一下什么是 java 字节码?评论已经给你指出问题了,是 google 不好用,还是 wikipedia 没看明白?承认自己错了那么难么?
|
4
WordTian 2019-09-24 21:54:56 +08:00
java 字节码不是二进制,是 jvm 虚拟机解析的一种语言,估计楼主没深入了解过
真要类比的话,也应该和汇编语言进行类比 |
5
laike9m 2019-09-24 21:58:52 +08:00 via Android 1
LZ 没错,任何东西都是 0101
|
6
Yourshell 2019-09-24 22:12:51 +08:00 4
你怎么不说成是高低电平
|
7
fuxiaohei 2019-09-24 22:14:13 +08:00 1
字节码和机器码不是一回事啊
|
8
taogen 2019-09-24 22:18:46 +08:00 via Android
任何数据都是用 0101 存储的,通过 0101 可以解码为可读的字符。你说字节码是 0101 就是说它是数据,实际上也没错。
class 文件的 0101 可以转换为 jvm 识别的语言,你可以说它是存储了 Java 虚拟机的指令比说它是 0101 更精确。 另外,使用 javap -c Example.class 可以看到指令。 |
9
3789 2019-09-24 22:35:41 +08:00 via Android
@amiwrong123 那这样子讲的话,jpg 文件也可以说成符合 jpg 规范的 0101 咯!简直就是脱裤子放屁嘛!😑
|
10
xfriday 2019-09-24 22:43:16 +08:00 1
0101 指的是 cpu 接收 0 (低) 1 (高)电平信号,直接对这些信号做出反馈,而字节码明显不是,字节码要经过 jvm 再次转化变成 0101 给 cpu
|
11
jhdxr 2019-09-24 22:48:07 +08:00
按照 LZ 或者 @laike9m #5 的逻辑,那其实我写的 java 代码(*.java ),或者我回复的这篇帖子,不都是 0101 么→_→
|
12
taogen 2019-09-24 22:52:58 +08:00 via Android
@xfriday 所有东西都是 0101,有些可执行,有些不可执行。字节码的 0101 经过 jvm 转化为 CPU 可执行的 0101
|
14
huaouo 2019-09-24 23:05:28 +08:00 via Android
@WordTian 错误,Java 字节码是二进制 .class 文件,你说的是反编译成的助记符形式,那玩意才能类比汇编语言。
|
15
maokabc 2019-09-24 23:23:31 +08:00 via Android
这不废话吗?什么不是 0101?与字节码相对的是机器码,javap 那种格式类比汇编语言,还有扩展过的 jasmin 可以自己编写生成 class。
|
16
deorth 2019-09-24 23:28:10 +08:00
楼主自闭了
|
17
leafdream 2019-09-24 23:32:02 +08:00
多看书
|
18
anoper 2019-09-24 23:34:53 +08:00
我觉得应该这么解释吧:字节码是在 jvm 上能够被解读的指令数据。计算机世界里直接说某个数据是 0101 没有意义,就好比你说图片,文字,utf-8 一样,也是 0101 的存储和 cpu 计算执行,但是他们都是有区别的,需要不同的方式,在不同的工具或者定义类型上,按照约定去读取解读成有意义的数据。
|
19
WordTian 2019-09-24 23:40:52 +08:00
@huaouo 真要细扣的话,你说的对,我的类比确实也不太恰当
编译型语言一般是,源码 -> 机器码 -> CPU 执行 解释型语言一般是,源码 -> 某类字节码 -> (经虚拟机解释)形成机器码 -> CPU 执行 |
20
lujjjh 2019-09-25 00:14:42 +08:00
结合前后文能理解你想表达的意思——Java 字节码之于 JVM 就好比机器码之于真实的机器,JVM 没法直接执行 Java 源代码,而是执行经过编译后的 Java 字节码,就像真实的机器只能执行机器码。引出 JVM 并没有对泛型提供支持,Java 的泛型完全是由编译器实现的。
|
21
joooooker21 2019-09-25 00:24:56 +08:00
记事本打开看一下不就知道了?
|
22
amiwrong123 OP @fuxiaohei
直接说 0101 就认为,0101=二进制文件=机器码,这样呗 |
23
ysc3839 2019-09-25 01:23:01 +08:00 via Android
先说我的理由:因为这是废话,大家都知道计算机底层是二进制运算的,但是实际与用户交互的时候几乎很少使用二进制的。编程也是这样,好像就只有位运算能跟二进制沾点边,其他情况下几乎不会涉及二进制。
而看了一下评论区,其他人大概认为你想表达的是 Java 编译成了原生的机器代码,这个是个人理解的问题。 |
24
widewing 2019-09-25 01:40:47 +08:00 via Android
是多不专业才会把字节码说成 0101 啊
|
25
reus 2019-09-25 01:40:48 +08:00
0101 是一个数值的二进制表示
字节码就是字节码 你可以说字节码可以用 0101 表示,但字节码同样可以用 0xabcd 表示,所以你不能说字节码就是 0101 |
26
reus 2019-09-25 01:42:22 +08:00
“数”和“数的表示”,就是这两个概念的区别。
|
27
amiwrong123 OP @lujjjh
嗯,还是你懂我,不过你讲的思路比较清晰。我只是想简单讲一下字节码的概念,然后引出泛型的原理和类型擦除。 |
28
lincanbin 2019-09-25 03:23:43 +08:00 via Android
不止字节码是 0101,视频、网页、图片、源代码、编译出来的二进制也都是 0101。
这句话跟李彦宏是男人一样,正确但是没有意义。 |
29
realpg 2019-09-25 08:02:06 +08:00
@amiwrong123 #22
一般来说,虽然不严谨,在编程领域讨论多层级的执行过程,0101 就指机器码 大概隐含的意思是直接能执行的 0101 如果你要拓宽了说,C++ JAVA GOLANG 的高级代码不也是存成 0101 的在存储设备里 |
30
liuxey 2019-09-25 08:11:57 +08:00
毫无关系的两个东西,今天早餐吃的质子,有点咸
|
31
hhhsuan 2019-09-25 09:06:14 +08:00 via Android
咋删了,还想学习一下
|
32
amiwrong123 OP @realpg
谢谢回答,懂啦。哎,出言不慎闹了个笑话。 |