繁体   English   中英

给 int 赋值时,括号中的“int”是什么意思?

[英]What does a 'int' in parenthesis mean when giving a value to an int?

这是我的一个例子。

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

    return delta;
}

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

这段代码只是我用它找到的一个例子; 我不是在寻找我发布的代码的具体答案。 通常, (int) 甚至会做什么。 我也看到它用 (byte) 完成了。

这意味着您正在将 long 转换为 int。 请参阅: http : //en.wikipedia.org/wiki/Type_conversion

你不能只说

int delta = (time - lastFrame);

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

当你施放(int)你丢弃浮点后的任何部分数量。 例如:

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

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

因此,如果该行的结果为 16.253353(作为示例),则转换将仅返回 16,因为 int 不处理小数位,只处理整数。

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

由于timelastFrame都是long int ,因此不需要四舍五入。

如果您有一个float或一个double ,则其中的差异可能已四舍五入。

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

(typename) 值或变量称为强制转换。 它告诉 Java 将值视为转换中规定的类型。 有时这是必要的,因为已经编写的方法返回的类型太大 - 您需要一个 int 而该方法返回一个 long。 有时它用于将超类转换为子类,以便可以调用子类中的方法。 如果您将原语转换为其他类型,请确保变量的大小足够“大”以容纳该值,否则您将获得奇怪的溢出值。 如果您将一个对象转换为不同的类型,您必须确保该对象是正确的类型,否则您将收到 ClassCastException,例如 - 将 String 转换为 Date 将不起作用,因为它们不在同一个类层次结构中.

此强制转换用于确保结果将以 int 值返回。 在这种情况下,时间是使用 getTime() 函数的长值(可能是 int64)。 但是对于 delta,您需要将其强制转换为 int (int32) 值。 这种类型转换可能会丢失值。

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

MyObject myobject = (MyObject) MyArray[0];

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM