为啥说成“字节码是 0101”就会遭到这样的口诛笔伐 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
amiwrong123
V2EX    程序员

为啥说成“字节码是 0101”就会遭到这样的口诛笔伐

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

    一般来说,虽然不严谨,在编程领域讨论多层级的执行过程,0101 就指机器码
    大概隐含的意思是直接能执行的 0101

    如果你要拓宽了说,C++ JAVA GOLANG 的高级代码不也是存成 0101 的在存储设备里
    liuxey
        30
    liuxey  
       2019-09-25 08:11:57 +08:00
    毫无关系的两个东西,今天早餐吃的质子,有点咸
    hhhsuan
        31
    hhhsuan  
       2019-09-25 09:06:14 +08:00 via Android
    咋删了,还想学习一下
    amiwrong123
        32
    amiwrong123  
    OP
       2019-09-25 12:04:45 +08:00 via Android
    @realpg
    谢谢回答,懂啦。哎,出言不慎闹了个笑话。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1078 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 18:16 PVG 02:16 LAX 10:16 JFK 13:16
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86