2011-10-25 4 views
3

私はJavaの人ではないので、これは単なる言語の問題かどうかはわかりません。同じ値を持つAndroid 2つの整数は正しく一致していません

私はAndroidアプリを書いています。アプリのある時点で、私はintgers(バージョン番号)と比較して、使用しているアプリケーションのバージョンを確認し、最新でない場合は何らかのアクションを実行します。私は自分の行動コードが常に実行されていることに気づきます。だから私は、デバッガでチェックし、私は彼らが正しいバージョンを実行しているかどうかを確認する場合は、私はこのようなコードを持っている:

if (savedVersionCode != currentVersionCode){ 
    //perform work 
} 

両方savedVersionCodecurrentVersionCodeは整数であり、この中に同じ値(226に等しいですケース)が、まだジャンプして作業を実行します。

私は、その値は両方とも226ですが、各整数(eclipseで検査した場合)はidであり、両方とも異なります。

ここで何が起こっているかについてのアイデアはありますか?

+0

「整数」または「int」? –

答えて

11

値がIntegerの場合は、参照を比較しています。 2つの異なるオブジェクトが効果的に同じ数を表すことができます。試してみてください:

if (savedVersionCode.intValue() != currentVersionCode.intValue()) 

または

if (!savedVersionCode.equals(currentVersionCode)) 

オートボクシングは、例えばので、0の周りの小さな範囲で番号の同じ参照を返しますよう、あなたが良く、小さい番号で管理していることに注意してください:

Integer x = 5; 
Integer y = 5; 
System.out.println(x == y); // Prints true 

x = 1000; 
y = 1000; 
System.out.println(x == y); // *Could* print true, but probably won't 
+1

がIntegerの場合、範囲は-127から最大128までで、上限は '-XX:AutoBoxCacheMax = 'オプションで設定できます –

関連する問題