在Java中如何将int值转换为long值?

在Java中如何将int值转换为long值?,java,Java,我有两个整数值,我想在java中将这两个值的差作为long返回 有可能吗?您可以将结果分配给一个长的: long result = intval2 - intval1; 如果您有大整数,您可以对这两个值使用Integer.longValue(),然后简单地减去这些值。Simple,转换为long并减去: public long diff(int i1, int i2) { return ((long) i1) - i2; } 自动装箱负责根据需要进行包装/展开您只需执行以下操作即可

我有两个整数值,我想在java中将这两个值的差作为long返回


有可能吗?

您可以将结果分配给一个长的:

long result = intval2 - intval1;

如果您有大整数,您可以对这两个值使用
Integer.longValue()
,然后简单地减去这些值。

Simple,转换为long并减去:

public long diff(int i1, int i2) {
     return ((long) i1) - i2;
}
自动装箱负责根据需要进行包装/展开

您只需执行以下操作即可

long difference = (long) i1 - i2;
如果你需要绝对的差异

long difference = Math.abs((long) i1 - i2);
e、 g

印刷品

4,000,000,000
-1
4294967295

您可能需要转换为
long
的原因是避免溢出。两个int值之间的最大差值在最大值和最小值之间,但如果

System.out.println(Integer.MAX_VALUE - Integer.MIN_VALUE);
印刷品

4,000,000,000
-1
4294967295
由于溢出,而与演员你得到

System.out.println((long) Integer.MAX_VALUE - Integer.MIN_VALUE);
印刷品

4,000,000,000
-1
4294967295

显然这是火箭科学。如果i1和i2是整数或整数:

return i1-i2;
Java 1.5+必需。但没有强制转换或转换



很难,也就是说,不可能相信您尝试过任何东西。

您的标题和问题相互矛盾。您可以通过长返回方法自由返回int。你为什么不试试呢?如果最明显的事情失败了,那么请发布你失败的代码。你的问题标题与描述相矛盾。如果你的描述是正确的,那么看看@juergen d的答案,这是正确的。如果您需要其他内容,请确保正确编辑问题为什么-您遇到了什么错误?
它不起作用
没有告诉我们任何信息。您能否提供一个示例,说明它何时不起作用、您期望得到什么以及您得到了什么?将retun类型更改为integer@user1741201.. 你到底想要什么。你需要首先确定并正确解释。你看起来很困惑。在所有这些困惑中,为什么不添加一个挑剔的东西:
(long)
既不是强制转换也不是隐式的:)Java和C中的转换和强制转换都使用相同的语法,
(long)intval2
是升级类型的转换表达式,不需要显式运算符。他/她询问的是差异。计算差异在哪里?它们不都是“带装箱”的吗?因为您使用的是类版本
Integer
/
Long
噢..问题标题和问题正文相互矛盾。bean.setIntegerProperty(LongValue1-longValue2)-这里set IntegerProperty是一个整数,LongValue是long属性。@user1741201您刚才在帖子中问了相反的问题。这里没有装箱,是吗?只是简单的强制转换。如果返回值存储在包装器变量中,或者参数是包装器实例,就会出现这种情况。也许我关于自动装箱的句子有点误导。我之所以添加这句话是因为问题标题(它涉及大写整数/长)。我明白了,是的,问题标题与问题不匹配。它引起了哈沃克!也不需要转换。@ejp如果省略转换,则会为例如i1=Integer.MAX\u值、i2=Integer.MIN\u值(尝试一下,您会看到不同之处)。强制转换强制以长精度计算表达式。括号可以省略,但是我更喜欢用括号括起来,因为它很明显,然后在不需要知道强制转换操作符的精确前置的情况下进行强制转换。当
int
Long
更合适时,我不会使用
int
Long
溢出,怎么溢出?两个操作数都是整数,因此差也是整数。它所需要的只是符号扩展,它会在升级时自动获得。溢出在哪里?Integer.MAX_值和Integer.MIN_值之间的差值约为40亿(如我的示例所示),该值作为int溢出到-1。;)