Java - 疑问: 基本数据类型源代码在哪里

  1. 概述

    1. java 基本数据类型 代码到底在哪
  2. 背景

    1. 偶然起了一个疑问
    2. 分析 java 源码的人挺多
      1. 一般都是 集合类, 或者 多线程
      2. 偶尔还有 反射类
    3. 可为啥就没有 基本数据类型 呢
      1. byte, char, short, int, long, float, double, boolean
      2. 是不是因为 这些东西 太简单了

1. 找代码

  1. 概述

    1. 尝试在 java 源代码 里找到这些东西
  2. 源代码

    1. 位置

      1. jdk 的 lib 目录下
    2. 文件名

      1. src.zip
  3. 查找

    1. 结果

      1. 没有发现
    2. 尝试

      1. int.class

        1. 没有, 哪来的小写 class
      2. Integer.class

        1. 尝试通过 ide 的跳转功能, 从 int 类变量跳过去
        2. 跳不过去
      3. 手动翻包

        1. 翻了半天, 也没找到
  4. 问题

    1. 跳转的时候, 会跳到另外一个地方

      1. External Libraries
        1. rt.jar
    2. 看了看发现 rt.jar 和 src.zip 的内容, 竟然是 一样的...

      1. 这是什么鬼?
      2. 旁边还有那么多包, 那些都是什么包?
    3. 结果

      1. rt.jar 内容和 src 确实一样
        1. rt 表示 runtime
      2. 其他包, 我也没弄太清楚
        1. 不过都是支持 jvm 的包

2. 上网搜

  1. 概述

    1. 本地找不到, 就只能上网搜了
  2. 方法

    1. 关键字

      # 以前有人告诉我, 要善用搜索引擎, 我最开始还不相信
      # 现在觉得, 这玩意真的挺重要的
      where is java primitive type code define
      
  3. 结果

    1. 定义

      1. 这些内容, 属于 java 语言规范
      2. 定义的位置, 应该是在 jvm 里
        1. 有很多开源的 jvm 实现, 比如 hotspot
        2. 定义的语言, 通常是 C++
    2. 其他

      1. 除了 基本数据类型 之外, 也有其他东西, 定义在 jvm 里
        1. 运算符
        2. 关键字
        3. 数组
        4. 其他

3. 结论

  1. 概述

    1. 最后的结论
  2. 结论

    1. 基本数据类型 和 关键字, 都是在 jvm 里定义的
    2. 想看的话, 去找 开源的 jdk
    3. 需要 C++ 支持

ps

  1. ref
    1. Why do we use rt.jar in a java project?

      1. rt.jar 内容
        1. Java Runtime Environment
    2. How are the primitive data types in java defined/written?

      1. jvm 定义
    3. Source code for array implementation in java

      1. 还有 数组
posted @ 2020-05-19 22:21  轩辕拾銉  阅读(505)  评论(0编辑  收藏  举报