如何在Java中从int转换为Long?

Gho*_*sty 207 java int casting long-integer

我一直在这里找到这两个人,谷歌的人有麻烦long,int而不是相反.但我敢肯定,我不是以前已经从去碰到这种情况的唯一一个intLong.

我发现的唯一其他答案是"首先将它设置为Long",这实际上并没有解决这个问题.

有人可以帮帮我吗?我最初尝试铸造,但我得到一个" Cannot cast from int to Long"

for (int i = 0; i < myArrayList.size(); ++i ) {
    content = new Content();
    content.setDescription(myArrayList.get(i));
    content.setSequence((Long) i);
    session.save(content);
}
Run Code Online (Sandbox Code Playgroud)

你可以想象我有点困惑,因为有些内容是以ArrayList形式出现的,所以我坚持使用int,我存储此信息的实体需要序列号为Long.

谢谢!

Dan*_*ker 234

请注意,施法者long与施法者之间存在差异Long.如果你转换为long(一个原始值),那么它应该自动装箱到Long(包装它的引用类型).

您也可以使用new创建实例Long,并使用int值初始化它.

  • 为了演示Earwicker所说的你可以调用Long.valueOf(i),它需要很长时间但会扩展一个int并给你一个Long对象. (30认同)
  • @Grundlefleck:Autoboxing使用`Long.valueOf()`(如果我没记错的话),所以根本没有区别.我的评论是回答答案,而不是你的评论. (5认同)
  • Autoboxing也是如此.顺便说一句,它介于-127和128之间. (4认同)
  • 自动装箱更可取,因为它不必每次都创建一个新的“Long”对象。 (2认同)
  • (警告:此注释的其余部分是猜测和推测)如果给Long.valueOf()的值介于0和128之间(这是很常见的),并且它返回一个缓存的实例,那么比自动装箱更好吗?(如果您认为值得的话,我可能会问一个新问题……) (2认同)

ser*_*erg 184

使用以下内容:Long.valueOf(int);.

  • Long.valueOf(long)也适用于int. (21认同)
  • Java中没有这样的方法,你把它误认为是`Long.valueOf(long)` (5认同)
  • 请注意,如果您正在接收一个为null的Integer对象,则会生成NullPointerException. (4认同)
  • @ will824 - 原始'int'变量不能为null. (4认同)
  • 有这种方法吗? (2认同)
  • 如果我认为是答案是正确的,那是正确的,因为我找不到方法`Long.valueOf(int)!!` (2认同)

sar*_*ret 16

如果您已将int类型化为Integer,则可以执行以下操作:

Integer y = 1;
long x = y.longValue();
Run Code Online (Sandbox Code Playgroud)


小智 11

使用

new Long(your_integer);
Run Code Online (Sandbox Code Playgroud)

要么

Long.valueOf(your_integer);
Run Code Online (Sandbox Code Playgroud)


Vic*_*cky 9

 1,new Long(intValue);
 2,Long.valueOf(intValue);
Run Code Online (Sandbox Code Playgroud)


Max*_*ler 6

我有这个小玩具,也处理非通用接口.如果输入错误,我可以抛出ClassCastException(OK和happy)

public class TypeUtil {
    public static long castToLong(Object o) {
        Number n = (Number) o;
        return n.longValue();
    }
}
Run Code Online (Sandbox Code Playgroud)


clo*_*her 6

在Java中,您可以执行以下操作:

 int myInt=4;
 Long myLong= new Long(myInt);
Run Code Online (Sandbox Code Playgroud)

在您的情况下,它将是:

content.setSequence(new Long(i));
Run Code Online (Sandbox Code Playgroud)


Ste*_*gin 5

怎么样

int myInt = 88;
Run Code Online (Sandbox Code Playgroud)

//不会编译

Long myLong = myInt;
Run Code Online (Sandbox Code Playgroud)

//编译,并保留int的非NULL精神。最好的演员根本没有演员。当然,您的用例可能需要Long和可能的NULL值。但是,如果int或其他long是您唯一的输入,并且您的方法可以修改,我建议您采用这种方法。

long myLong = myInt;
Run Code Online (Sandbox Code Playgroud)

//编译是最有效的方法,它可以清楚地表明源值是且永远不会为NULL。

Long myLong = (long) myInt;
Run Code Online (Sandbox Code Playgroud)