【问题标题】:What is the difference between long and Long in android code?android代码中的long和Long有什么区别?
【发布时间】:2013-05-19 05:31:07
【问题描述】:

我试图在一个 android 应用程序中编写一个 AsycTask。在那里我遇到了 Integer 和 Long 数据类型,但我不确定它们是什么。我尝试使用long 代替Long,但在eclipse 中出现错误提示

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

【问题讨论】:

标签: java android android-asynctask


【解决方案1】:

Long 是一个类。 long 是一个原始的。这意味着 Long 可以为空,而 long 不能。 Long 可以去任何需要 Object 的地方,long 不能(因为它不是一个类,它不是从 Object 派生的)。

Java 通常会自动将 Long 翻译成 long (反之亦然),但不会用于 null(因为 long 不能为 null),并且您需要在需要传递时使用 Long 版本一个类(例如在泛型声明中)。

【讨论】:

    【解决方案2】:

    问:“长”和“长”有什么区别?

    A:前者是“原始人”;后者是一个“对象”。

    这是一篇很棒的文章,说明了为什么您可能更喜欢“Long”(“对象包装器”):

    Primitive Types Considered Harmful

    PS:

    使用“Long”对象包装器有很多优点(包括“null”值),使用“long”原语有很多优点(包括简洁和高效)。

    “装箱”和“拆箱”是在一个和另一个之间切换的机制。另一个很好的链接:

    Using Boxing With Care

    【讨论】:

      【解决方案3】:

      Integer 和 Long 是 int 和 long 原始数据类型的对象包装器。

      AsyncTask 使用泛型来确定值,但是泛型仅将对象作为参数。

      【讨论】:

        【解决方案4】:

        long 是原始数据类型,而 Long 是对象。
        AsyncTask 只能作为参数对象。

        【讨论】:

          【解决方案5】:

          Long 是 long 的 Object 形式...

          您应该使用 long 和 int,除非您需要使用从 Object 继承的方法,例如 hashcode。 java.util.collections 方法通常使用盒装(对象包装)版本,因为它们需要适用于任何对象

          long 也是按值传递,而 Long 是按引用传递的值,就像所有非原始 Java 类型一样

          另外,Long 可以为空

          【讨论】:

            【解决方案6】:

            AsyncTask 使用需要引用类型参数的泛型参数。 long 是原始类型,因此是不允许的。另一方面,Long 是一个类,所以应该改用。

            【讨论】:

              【解决方案7】:

              您还必须注意它们占用的空间。

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

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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2022-01-21
                • 1970-01-01
                • 1970-01-01
                • 2023-03-14
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多