在java中将小长转换为大长

时间:2010-09-07 11:17:10

标签: java

long myvariable;不能有值null,但Long myBigVariable;可以,所以我想将myvariable转换/转换为大Long,所以我可以为它赋值null。我怎样才能做到这一点?

我尝试了myvariable = new Long(null);myvariable = (Long)(null);他们都失败了,还有其他解决办法吗?

我无法将myvariable更改为Long类型,它必须保持较长时间。

8 个答案:

答案 0 :(得分:5)

为了创建一个null Long:

Long myvariable = null;

编辑:我无法将myvariable更改为Long,它必须保持很长时间。

然后不,你不能将基元设置为null。

答案 1 :(得分:4)

原始类型long的默认值为00L是准确的),即使您没有指定任何内容,如果它是一个字段。如果它是局部变量,您应该显式初始化它。因此,您不能拥有null值。

如果您希望某些值被视为“无效”或“不存在”,但您不希望它为0,则可以使用:

  • -1
  • Long.MAX_VALUE / Long.MIN_VALUE(或Integer.MAX_VALUE

然后:

Long myBigVariable = myvariable == Long.MAX_VALUE 
       ? null 
       : myvariable; // autoboxing here; altarnatively new Long(myvariable)

答案 2 :(得分:2)

long是一个原始的64位整数。 64位的每个组合用于表示值。使用long无法表示null。

Long是一个表示64位整数的类。您可以创建一个Long实例来表示长期可以使用的任何值;或使用null实例表示null。

Long myLongValue = 9223372036854775807L; // OK
Long myLongNull = null; // OK
long myvariable = null; // Error

答案 3 :(得分:0)

不,你不能这样做。必须对长值进行评估。

每个对象(包括Long)都可以为null,但没有基本类型(int,long等)可以。因此,无法将null Long对象强制转换为其基本类型。

当Long对象被强制转换为long时,将调用“ longValue()”方法来执行强制转换。无法在null对象上调用此方法:它将导致nullPointerException。

答案 4 :(得分:0)

  

我无法将myvariable更改为type   很长,它必须保持很长时间。

然后您无法将null分配给该变量。无法将null分配给原始变量。

答案 5 :(得分:0)

  

我尝试了myvariable = new Long(null);

嗯..这适合我! :)

答案 6 :(得分:0)

myvariable = new Long(null);可以编译,但在运行时,它会抛出NumberFormatException

答案 7 :(得分:-1)

取决于您使用的Java版本。自Java 1.5(或1.4)以来,支持自动装箱。这意味着,如果需要这样做,long类型的变量将自动转换为Long。