这是我的一个例子。
public int getDelta()
{
long time = getTime();
int delta = (int) (time - lastFrame);
lastFrame = time;
return delta;
}
在第四行中,有一个“(int)”。这是什么意思?
这段代码只是我发现的一个例子;我不是在寻找我发布的代码的具体答案。一般来说,(int)甚至是什么。我也看过它(字节)。
答案 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)
转换为整数。
由于time
和lastFrame
都是long int
,因此无需进行舍入。
如果您有float
或double
,那么差异可能已向下舍入。
在您的情况下,它只使用较小的数据类型: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而不是日期。