1

在 c/c++ 中,可以执行以下操作

float b = 3.;
int a = *(int*)&b;

我想在java中做同样的事情,有可能吗?如果可以,怎么做?

谢谢你。

4

4 回答 4

3

Java没有指针。对于这种特定情况,您可以使用Float.intBitsToFloat(并且Float.floatToIntBits对于另一种方式;Double也有类似的方法)。然而,没有办法进行更时髦的“转换”。

于 2013-08-23T04:53:55.160 回答
3

JAVA中没有POINTER这种东西。JAVA 有一个称为内存管理或说 GC(垃圾收集器)的功能来为您处理所有与内存相关的操作。不允许使用内存地址访问任何内存块。

于 2013-08-23T04:54:18.077 回答
2

Pointers在 java 中不可用。您必须使用Object.

Float f = new Float(3.0);
Integer i = Math.round(f);
于 2013-08-23T04:53:01.403 回答
0

Java 基于指针实现一切。因此,Java 中的任何对象变量都将作为指针引用传递。他们使它对 Java 开发人员不可见。要从 float 或 double 转换为 int,您可以简单地尝试

double b = 3.0;
int a = (int)b;

请注意,如果 b = 1.x,则 a = 1

于 2013-08-23T05:31:59.100 回答