long myvariable;
不能有值null
,但Long myBigVariable;
可以,所以我想将myvariable转换/转换为大Long,所以我可以为它赋值null。我怎样才能做到这一点?
我尝试了myvariable = new Long(null);
和myvariable = (Long)(null);
他们都失败了,还有其他解决办法吗?
我无法将myvariable更改为Long类型,它必须保持较长时间。
答案 0 :(得分:5)
为了创建一个null Long:
Long myvariable = null;
编辑:我无法将myvariable更改为Long,它必须保持很长时间。
然后不,你不能将基元设置为null。
答案 1 :(得分:4)
原始类型long
的默认值为0
(0L
是准确的),即使您没有指定任何内容,如果它是一个字段。如果它是局部变量,您应该显式初始化它。因此,您不能拥有null
值。
如果您希望某些值被视为“无效”或“不存在”,但您不希望它为0,则可以使用:
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。