android代码中long和Long有什么区别?

时间:2013-05-23 18:09:57

标签: java android android-asynctask

我试图在Android应用程序中编写AsycTask。在那里我遇到了Integer和Long数据类型,我不确定它们是什么。我尝试使用long到位Long,但我在日食中遇到错误

'Syntax error on token "long", Dimensions expected after this token'.

7 个答案:

答案 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”原语有许多优点(包括简洁和高效)。

“拳击”和“拆箱”是在一个和另一个之间改变的机制。另一个好的链接:

Using Boxing With Care

答案 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个字节空间的原语。

当您处理大量存储在内存中或通过网络发送的数据时,这可能变得非常重要。