私はアンドロイドアプリケーションでAsycTaskを書き込もうとしていました。 Integer型とLong型のデータ型が出てきて、そのデータ型がわからない。私は場所Long
にlong
を使用してみましたが、私はアンドロイドコードのロングとロングの違いは何ですか?
'Syntax error on token "long", Dimensions expected after this token'.
私はアンドロイドアプリケーションでAsycTaskを書き込もうとしていました。 Integer型とLong型のデータ型が出てきて、そのデータ型がわからない。私は場所Long
にlong
を使用してみましたが、私はアンドロイドコードのロングとロングの違いは何ですか?
'Syntax error on token "long", Dimensions expected after this token'.
ロングはクラスです。 longはプリミティブです。これは、Longがnullである可能性があることを意味します。 LongはObjectをとる場所には移動できます(Objectから派生しないクラスではないため)ことはできません。
Javaは、通常、Longを自動的にlongに変換します(またその逆もあります)が、nullの場合は(longはnullにはならないため)、Longバージョンを使用する必要がありますクラスを渡す(ジェネリック宣言など)。
整数を言って日食中にエラーが発生しましたし、ロングはintとlongのプリミティブデータ型のオブジェクトラッパーです。
AsyncTaskはジェネリックを使用して値を決定しますが、ジェネリックスはオブジェクトのみをパラメータとして使用します。
AsyncTaskは、参照型パラメータを必要とする汎用パラメータを使用します。 long
はプリミティブ型なので許可されていません。一方、Long
はクラスなので代わりに使用する必要があります。
longはプリミティブデータ型ですが、Longはオブジェクトです。
AsyncTaskは、パラメータオブジェクトとしてのみ使用できます。
Q:「long」と「Long」の違いは何ですか?
A:前者は「プリミティブ」です。後者は「オブジェクト」です。ここで
は、あなたが「ロング」(「オブジェクトラッパー」)を好む理由を示唆素晴らしい記事です:
Primitive Types Considered Harmful
PS:
「ロング」を使用することには多くの利点があります。オブジェクトラッパー(「null」値を含む)、および「長い」プリミティブ(簡潔さと効率を含む)を使用することに多くの利点があります。
「ボクシング」と「アンボクシング」は、一方と他方の間で変更する仕組みです。もう一つの良いリンク:
ありがとう記事。それは多くの疑念を明らかにした。 –
ロングは、あなたが長い間使用していて、このようなハッシュコードのようにObjectから継承されたメソッドの使用をする必要がある場合を除き、int型べきで長いのオブジェクトの形...
です。 java.util.collectionsメソッドは、通常、ボックス化された(オブジェクトラップされた)バージョンを使用します。これは、すべてのオブジェクトで動作する必要があるためです。
longはパスバイ値で、プリミティブJava型
また、ロングはあなたがまた、それらの両方が取ることにスペースを認識する必要があり
nullにすることができます。
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つのバイトを占めているだけで単一のプリミティブです。
これは、大量のデータをメモリに格納したり、ネットワーク経由で送信したりする場合に非常に重要になります。
Javaボクシング/アンボクシングについて読んでみることをお勧めします。これは前にその違いに気づいていなかった理由です:http://docs.oracle.com/javase/tutorial/java/data/autoboxing.html – onit