我试图在Android应用程序中编写AsycTask。在那里我遇到了Integer和Long数据类型,我不确定它们是什么。我尝试使用long
到位Long
,但我在日食中遇到错误
'Syntax error on token "long", Dimensions expected after this token'.
答案 0 :(得分:22)
龙是一个班级。长是原始的。这意味着Long可以为null,长期不能。 Long可以去任何需要Object的地方,很久不能(因为它不是一个不是从Object派生的类)。
Java通常会自动将Long转换为long(反之亦然),但不会为null(因为long不能为null),并且需要时需要使用Long版本一个类(例如在通用声明中)。
答案 1 :(得分:7)
问:“长”和“长”之间有什么区别?
答:前者是“原始的”;后者是一个“对象”。这是一篇很棒的文章,建议你为什么喜欢“Long”(“对象包装”):
Primitive Types Considered Harmful
PS:
使用“Long”对象包装器(包括“null”值)有很多优点,使用“long”原语有许多优点(包括简洁和高效)。
“拳击”和“拆箱”是在一个和另一个之间改变的机制。另一个好的链接:
答案 2 :(得分:1)
Integer和Long是int和long原始数据类型的对象包装器。
AsyncTask使用泛型来确定值,而泛型只将对象作为参数。
答案 3 :(得分:0)
AsyncTask使用需要引用类型参数的泛型参数。 long
是原始类型,因此不允许。另一方面,Long
是一个类,所以应该使用它。
答案 4 :(得分:0)
long是原始数据类型,而Long是对象 AsyncTask只能作为参数对象。
答案 5 :(得分:0)
Long是对象形式的长...
您应该使用long和int,除非您需要使用从Object继承的方法,例如hashcode。 java.util.collections方法通常使用盒装(Object-wrapped)版本,因为它们需要适用于任何Object
long也是值传递,而Long是所有非原始Java类型的传递引用值
此外,Long可以为null
答案 6 :(得分:0)
你还必须意识到他们两个人所占的空间。
enum1 part1 = enum1.A_1;
enum2 part2 = enum2.B_2;
enum3 part3 = enum3.C_3;
继承自另一个类,并且还包含其他值:
Long
public final class Long extends Number implements Comparable<Long> {
@Native public static final long MIN_VALUE = 0x8000000000000000L;
@Native public static final long MAX_VALUE = 0x7fffffffffffffffL;
}
只是一个占用8个字节空间的原语。
当您处理大量存储在内存中或通过网络发送的数据时,这可能变得非常重要。