好奇 Java 能看到操作符的代码实现吗,如++

2019-12-21 16:04:29 +08:00
 pythonee
JDK 可以看类库的实现,但是好奇能否看原生的操作符的实现,比如++
3761 次点击
所在节点    Java
6 条回复
zacharyjia
2019-12-21 16:08:43 +08:00
操作符在编译的时候会编译成字节码 -> javac 包含在 openjdk 里 -> openjdk 开源
结论:能
(以上纯属本人瞎猜🤪
cedoo22
2019-12-21 16:10:33 +08:00
javac 编译成.class, 再 javap 一下,查一下 jvm opcode 就知道了。
https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-7.html
secondwtq
2019-12-21 17:02:17 +08:00
操作符的实现在 javac 里面
Scala 和 Kotlin 之类的可以直接看
ztcaoll222
2019-12-21 17:08:58 +08:00
你是说.class 文件的 bytecode?
idea 的话, 双击 shift, 输入 show bytecode
kilen3a
2019-12-21 17:19:33 +08:00
如果你是说 class 文件中的操作符的话,++ 一般是 iinc,其他的可以看看 JVMS 的定义;如果是说 c1、c2 的实现的话,像 Hotspot 的可以看看 src/share/vm/interpreter/bytecodeInterpreter.cpp 、src/share/vm/opto/parser2.cpp 这些源码
guxingke
2019-12-21 17:35:11 +08:00
主要还是看 编译之后的 class 内方法部分的 指令 了.
若有兴趣探究一下 jvm 的实现. [mini-jvm]( https://github.com/guxingke/mini-jvm)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/631081

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX