在为int赋值时,括号中的'int'是什么意思?

时间:2012-03-26 16:28:39

标签: java

这是我的一个例子。

public int getDelta()
    {
      long time = getTime();
      int delta = (int) (time - lastFrame);
      lastFrame = time;

    return delta;
}

在第四行中,有一个“(int)”。这是什么意思?

这段代码只是我发现的一个例子;我不是在寻找我发布的代码的具体答案。一般来说,(int)甚至是什么。我也看过它(字节)。

7 个答案:

答案 0 :(得分:4)

这意味着你要将一个long转换为int。请参阅:http://en.wikipedia.org/wiki/Type_conversion

你不能只说

int delta = (time - lastFrame);

因为time和lastFrame是long(我假设lastFrame至少是)。因此,您必须将该减法的结果类型(强制转换)转换为整数值。

答案 1 :(得分:3)

使用(int) 强制转换时,您会丢弃浮点后的任何分数。例如:

System.out.println((int) 15.5); // prints 15

答案 2 :(得分:2)

转换为原始数据类型int。它会尝试将计算生成的结果(在本例中为long类型)转换为原始int(整数)类型。

所以,如果你从那一行获得了16.253353的结果(例如),那么强制转换只返回16,因为int不处理小数位,只处理整数。

答案 3 :(得分:1)

这是转换运营商。它将(time - lastFrame)转换为整数。

由于timelastFrame都是long int,因此无需进行舍入。

如果您有floatdouble,那么差异可能已向下舍入。

在您的情况下,它只使用较小的数据类型:int,而不是long

答案 4 :(得分:1)

(typename)值或变量称为cast。它告诉Java将值视为强制转换中规定的类型。有时它是必要的,因为已经编写的方法返回的类型太大了 - 你需要一个int,并且该方法返回一个long。有时它用于将超类强制转换为子类,以便可以调用子类中的方法。如果将基元转换为其他类型,请确保变量的大小足以容纳该值,否则您将获得更奇怪的溢出值。如果将对象强制转换为其他类型,则确保对象的类型正确,或者您将获得ClassCastException,例如 - 将字符串转换为Date将无法工作,因为它们不在同一个类层次结构中

答案 5 :(得分:1)

此强制转换用于确保结果将以int值返回。在这种情况下,time是一个使用getTime()函数的long值(可能是int64)。但对于delta,您需要将其转换为int(int32)值。这个演员阵容可能会失去价值。

答案 6 :(得分:1)

在括号中说明数据类型会使编译器对该类型执行显式转换。 它可以用任何类型/对象完成。例如:

MyObject myobject = (MyObject) MyArray[0];

在您的代码中,我相信它会将结果变量定义为int而不是日期。