2012-10-12 48 views
-6

我有两个整数值,我想在Java中返回这两个值的差异。如何在Java中将int值转换为长整型值?

可能吗?

+12

你的标题和问题相互矛盾。 –

+0

你可以自由地从长返回方法返回一个int。你为什么不试试呢?如果最明显的事情失败了,那么请张贴失败的代码。 –

+0

您的问题标题与描述相矛盾。 如果你的描述是正确的 - 那么看看@juergen d的答案,这是正确的。 如果您需要别的东西,请务必正确编辑问题 – peshkira

回答

10

您可以将结果只分配给长:

long result = intval2 - intval1; 
+0

对不起,不起作用 –

+0

为什么 - 你得到什么错误? –

+5

“它不工作”这并没有告诉我们任何事情。你能举一个例子,说明它何时无法工作,你期望什么以及你得到了什么? –

0
int val1=10; 

int val2=6; 

long val3 = (long) val1 - val2; 
+0

他/她在询问差异。计数差异在哪里? –

+0

不是所有的“拳击”,因为你正在使用类的版本'整数'/'长' – weston

+2

哦问题标题和问题主体相互矛盾。 –

0

如果你有大的整数,则可以使用两个Integer.longValue(),简单地减去这些值。

-1

简单,转换为长期减:

public long diff(int i1, int i2) { 
    return ((long) i1) - i2; 
} 

自动装箱需要包装的保健/展开所需

+1

这里没有拳击吗?只是简单的演员。 – weston

+0

如果返回值存储在包装器变量中,或者参数将是包装器实例,则会出现此情况。也许我的句子abount autoboxing是有点误导。我添加了这个句子,因为问题*标题*(它谈到资本整数/长)。 – Durandal

+0

我明白了,问题标题与问题不符。这是造成havok! – weston

1

你可以做

long difference = (long) i1 - i2; 

,如果你需要的绝对差值

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

例如

int i1 = 2000000000; 
int i2 = -2000000000; 
long difference = Math.abs((long) i1 - i2); 
System.out.printf("%,d%n", difference); 

打印

4,000,000,000 

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

System.out.println(Integer.MAX_VALUE - Integer.MIN_VALUE); 

打印

-1 

由于溢出,而有投你

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

打印

4294967295 
+0

不需要强制转换。 – EJP

+0

@EJP在不投出“int-int”的情况下是一个会溢出的“int”。 –

+0

溢出如何?两个操作数都是整数,所以差异也是int。它需要的只是符号扩展,它会在升级时自动获取。溢出在哪里? – EJP

1
public Long difference(Integer i1, Integer i2){ 
    return new Long(i1-i2); 
} 
+1

当'int'或'long'更合适时,我不会使用'Integer'或'Long'。 –

0

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

return i1-i2; 

需要Java 1.5+。但没有演员或转换。

很难,即不可能,相信你甚至尝试过任何东西。