有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将乘法运算的一个操作数强制转换为长?

我将两个整数相乘,并存储为long。但它显示错误为, 将此乘法运算的一个操作数强制转换为长整数。如何解决这个问题

 private int milisecPerSecond = 1000;

/**
 * The update interval in seconds.
 */
// Update frequency in seconds
private int updateIntervalInSec = 5;
 /**
 * The update interval.
 */
// Update frequency in milliseconds
private long updateInterval = milisecPerSecond * updateIntervalInSec;

共 (1) 个答案

  1. # 1 楼答案

    首先,这不会导致编译器错误。通常情况下,乘法为整数并将结果存储在整数中

    32位宽的带符号整数最多可容纳约20亿个数字。如果您的代码按照它所说的做,那么更新间隔将为200万秒,即23天

    如果您真的想强制进行长时间的计算,只需将其中一个因素:

    long updateInterval = millisecsPerSecond * (long) updateIntervalInSec;
    

    第二个因素将自动转换

    请记住,仅铸造结果是不够的:

    private long updateInterval = (long) (milisecPerSecond * updateIntervalInSec);
    // THIS WON'T DO AS EXPECTED
    

    因为它会对int进行有问题的计算,然后将可能错误的结果转换成一个长的结果

    关于Java的每本书的前三页都描述了Casting。如果您对代码质量非常认真,以至于能够运行代码质量工具,那么就让熟悉您使用的语言的人坐在您旁边。一双训练有素的代码审查新手是一个很好的资源