Java 编程语言中的数据类型如何映射到本机编程语言(如 C 和 C++)中的数据类型

how data types in the Java programming language map to the data types in native programming languages such as C and C++,specifically

本文关键字:数据类型 编程语言 C++ 本机 映射 何映射 Java      更新时间:2023-10-16

《Java原生接口程序员指南和规范》一书的第3章,其中说"基元类型的映射很简单",我对这句话有点困惑。众所周知,c数据类型的大小是不确定的,这取决于程序运行的环境,符合...如int类型的大小可以是2个字节或4个字节。但是 java 数据类型的大小是确定的。int 的大小是 4 个字节。

那么,JNI是如何清晰地映射Java和C/C++之间的数据类型的呢?

任何答案将不胜感激!

嗯,在 C 中,有一个名为 stdint.h 的模块定义了 int64_tint32_t 和 friends 的类型,这确实使映射变得"简单"。

但是你注意到,在任何特定的 C 实现中,普通旧int的大小都没有完全指定。 作者确实对"直截了当"这个词非常宽松,并假设你会把这个声明理解为"Java的int映射到32位的C有符号整数类型"。

jni.h 标头定义了适当的基元类型:jint、jlong、jchar 等。 声明这些原语以匹配相应 Java 原语的大小。 在您的 JNI 代码中使用这些代码。