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
《Java原生接口程序员指南和规范》一书的第3章,其中说"基元类型的映射很简单",我对这句话有点困惑。众所周知,c数据类型的大小是不确定的,这取决于程序运行的环境,符合...如int类型的大小可以是2个字节或4个字节。但是 java 数据类型的大小是确定的。int 的大小是 4 个字节。
那么,JNI是如何清晰地映射Java和C/C++之间的数据类型的呢?
任何答案将不胜感激!
嗯,在 C 中,有一个名为 stdint.h
的模块定义了 int64_t
、 int32_t
和 friends 的类型,这确实使映射变得"简单"。
但是你注意到,在任何特定的 C 实现中,普通旧int
的大小都没有完全指定。 作者确实对"直截了当"这个词非常宽松,并假设你会把这个声明理解为"Java的int
映射到32位的C有符号整数类型"。
jni.h 标头定义了适当的基元类型:jint、jlong、jchar 等。 声明这些原语以匹配相应 Java 原语的大小。 在您的 JNI 代码中使用这些代码。
相关文章:
- 防止主数据类型C++的隐式转换
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 在C++中打印指向不同基元数据类型的指针的内存地址
- C++浮点数据类型和字符串数据类型无法子到模板函数中
- 如何计算数据类型的范围,例如int
- C++中数据类型修饰符的顺序
- C++LinkedList问题.数据类型之间存在冲突?没有匹配的构造函数
- 特定数据类型的模板类
- 具有多个模板的模板函数,用于特定数据类型(如字符串)?
- 有没有办法提示用户使用哪种数据类型作为模板 c++
- int数据类型的指针指向的是什么,如果是一个类的私有数据成员,我们创建了该类的两个对象?
- 时间复杂度 当具有复合数据类型(如元组或对)时?
- 如何获取C++字符数据类型的地址
- 将复杂的非基元C++数据类型转换为 Erlang/Elixir 格式,以使用 NIF 导出方法
- 是否可以用类似C/C++(或任何语言)的语言,从作为用户输入的字符串或文件中创建用户定义的数据类型
- LLVM:如何在运行时跟踪非类型语言的 Value* 的数据类型?
- 我如何使用GO语言读取可能是两种不同数据类型之一的HDF5属性
- Java 编程语言中的数据类型如何映射到本机编程语言(如 C 和 C++)中的数据类型
- Windows编程和数据类型
- 音频编程数据类型