我试图在一个 android 应用程序中编写一个 AsycTask。在那里我遇到了 Integer 和 Long 数据类型,但我不确定它们是什么。我尝试long
就地使用Long
,但在 Eclipse 中出现错误提示
'Syntax error on token "long", Dimensions expected after this token'.
我试图在一个 android 应用程序中编写一个 AsycTask。在那里我遇到了 Integer 和 Long 数据类型,但我不确定它们是什么。我尝试long
就地使用Long
,但在 Eclipse 中出现错误提示
'Syntax error on token "long", Dimensions expected after this token'.
龙是一类。long 是一个原始的。这意味着 Long 可以为空,而 long 不能。Long 可以去任何需要 Object 的地方,long 不能(因为它不是一个类,它不是从 Object 派生的)。
Java 通常会自动将 Long 转换为 long(反之亦然),但不会用于 null(因为 long 不能为 null),并且当您需要传递类时需要使用 Long 版本(例如在通用声明中)。
问:“长”和“长”有什么区别?
A:前者是“原始人”;后者是一个“对象”。
这是一篇很棒的文章,说明了为什么您可能更喜欢“Long”(“对象包装器”):
PS:
使用“Long”对象包装器有很多优点(包括“null”值),使用“long”原语有很多优点(包括简洁和高效)。
“装箱”和“拆箱”是在一个和另一个之间转换的机制。另一个很好的链接:
Integer 和 Long 是 int 和 long 原始数据类型的对象包装器。
AsyncTask 使用泛型来确定值,但是泛型仅将对象作为参数。
AsyncTask使用需要引用类型参数的泛型参数。long
是原始类型,因此是不允许的。另一方面Long
是一个类,所以应该使用它。
long 是原始数据类型,而 Long 是对象。
AsyncTask 只能作为参数对象。
Long是long的宾语形式...
您应该使用 long 和 int,除非您需要使用从 Object 继承的方法,例如 hashcode。java.util.collections 方法通常使用盒装(对象包装)版本,因为它们需要适用于任何对象
long 也是按值传递,而 Long 是按引用传递值,就像所有非原始 Java 类型一样
此外,Long 可以为空
您还必须注意它们占用的空间。
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;
}
long
只是一个占用 8 个字节空间的原语。
当您处理大量存储在内存中或通过网络发送的数据时,这可能变得非常重要。