-
概述
- java 基本数据类型 代码到底在哪
-
背景
- 偶然起了一个疑问
- 分析 java 源码的人挺多
- 一般都是 集合类, 或者 多线程
- 偶尔还有 反射类
- 可为啥就没有 基本数据类型 呢
- byte, char, short, int, long, float, double, boolean
- 是不是因为 这些东西 太简单了
1. 找代码
-
概述
- 尝试在 java 源代码 里找到这些东西
-
源代码
-
位置
- jdk 的 lib 目录下
-
文件名
- src.zip
-
-
查找
-
结果
- 没有发现
-
尝试
-
int.class
- 没有, 哪来的小写 class
-
Integer.class
- 尝试通过 ide 的跳转功能, 从 int 类变量跳过去
- 跳不过去
-
手动翻包
- 翻了半天, 也没找到
-
-
-
问题
-
跳转的时候, 会跳到另外一个地方
- External Libraries
- rt.jar
- External Libraries
-
看了看发现 rt.jar 和 src.zip 的内容, 竟然是 一样的...
- 这是什么鬼?
- 旁边还有那么多包, 那些都是什么包?
-
结果
- rt.jar 内容和 src 确实一样
- rt 表示 runtime
- 其他包, 我也没弄太清楚
- 不过都是支持 jvm 的包
- rt.jar 内容和 src 确实一样
-
2. 上网搜
-
概述
- 本地找不到, 就只能上网搜了
-
方法
-
关键字
# 以前有人告诉我, 要善用搜索引擎, 我最开始还不相信 # 现在觉得, 这玩意真的挺重要的 where is java primitive type code define
-
-
结果
-
定义
- 这些内容, 属于 java 语言规范
- 定义的位置, 应该是在 jvm 里
- 有很多开源的 jvm 实现, 比如 hotspot
- 定义的语言, 通常是 C++
-
其他
- 除了 基本数据类型 之外, 也有其他东西, 定义在 jvm 里
- 运算符
- 关键字
- 数组
- 其他
- 除了 基本数据类型 之外, 也有其他东西, 定义在 jvm 里
-
3. 结论
-
概述
- 最后的结论
-
结论
- 基本数据类型 和 关键字, 都是在 jvm 里定义的
- 想看的话, 去找 开源的 jdk
- 需要 C++ 支持
ps
- ref
-
Why do we use rt.jar in a java project?
- rt.jar 内容
- Java Runtime Environment
- rt.jar 内容
-
How are the primitive data types in java defined/written?
- jvm 定义
-
Source code for array implementation in java
- 还有 数组
-