2012-03-26 258 views
1

这是我的例子。向int给值时,括号中的'int'是什么意思?

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

    return delta; 
} 

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

这段代码只是我找到的一个例子;我没有寻找我发布的代码的特定答案。 (int)通常会做什么。我也看过(字节)。

+3

这是一个“演员”。将值的数据类型强制转换为指定类型的右侧。 (在C或Java类中几乎是第一天的东西) – 2012-03-26 16:30:01

回答

4

这意味着你正在投入一个长整型。请参阅:http://en.wikipedia.org/wiki/Type_conversion

你不能只是说

int delta = (time - lastFrame); 

由于时间和lastFrame是多头(我假设lastFrame,至少)。因此,您必须将类型(转换)该减法的结果转换为整数值。

+0

嗯,是的,我忘记了从大数据类型到小数据类型的Java强制类型转换。 +1 – 2012-03-26 16:34:59

1

这是一个转换运算符。它将(time - lastFrame)转换为整数。

由于两个timelastFramelong int S,也没有必要四舍五入。

如果您有任何一个floatdouble,差异有可能被舍去。

你的情况,它只是使用一个较小的数据类型:int,而不是long

3

当您将转换为(int)时,您会丢弃浮点后的任何分数。例如:

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

将其转换为原始数据类型int。它会尝试将计算结果(在这种情况下将为long类型)转换为原始类型int(整型)。因此,如果你从该行(作为例子)得到16.253353的结果,那么该转换将返回16,因为int不处理小数位,只处理整数。

1

(typename)value或variable被称为casting。它告诉Java将值视为演员规定的类型。有时候这是必要的,因为已经编写的方法返回的类型太大 - 你需要一个int并且该方法返回一个long。有时它用于将超类转换为子类,以便可以调用子类中的方法。如果你将原语转换为其他类型,确保变量的大小足够大以保存值,否则你会得到更奇怪的溢出值。如果您将对象转换为其他类型,则必须确保该对象是正确的类型,否则将得到ClassCastException,例如将String转换为日期将不起作用,因为它们不在同一个类层次结构中。

1

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

1

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

MyObject myobject = (MyObject) MyArray[0]; 

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

相关问题