Convert Long into Integer

后端 未结 14 2117
伪装坚强ぢ
伪装坚强ぢ 2020-12-07 07:48

How to convert a Long value into an Integer value in Java?

14条回答
  •  一整个雨季
    2020-12-07 07:56

    Here are three ways to do it:

    Long l = 123L;
    Integer correctButComplicated = Integer.valueOf(l.intValue());
    Integer withBoxing = l.intValue();
    Integer terrible = (int) (long) l;
    

    All three versions generate almost identical byte code:

     0  ldc2_w  [17]
     3  invokestatic java.lang.Long.valueOf(long) : java.lang.Long [19]
     6  astore_1 [l]
     // first
     7  aload_1 [l]
     8  invokevirtual java.lang.Long.intValue() : int [25]
    11  invokestatic java.lang.Integer.valueOf(int) : java.lang.Integer [29]
    14  astore_2 [correctButComplicated]
    // second
    15  aload_1 [l]
    16  invokevirtual java.lang.Long.intValue() : int [25]
    19  invokestatic java.lang.Integer.valueOf(int) : java.lang.Integer [29]
    22  astore_3 [withBoxing]
    // third
    23  aload_1 [l]
    // here's the difference:
    24  invokevirtual java.lang.Long.longValue() : long [34]
    27  l2i
    28  invokestatic java.lang.Integer.valueOf(int) : java.lang.Integer [29]
    31  astore 4 [terrible]
    

提交回复
热议问题