2016-09-23 20 views
-1

スニペット:のJava整数対INT - 私は次のJavaを持って、異なる範囲

int begin=Integer.MAX_VALUE-10; 
int end=Integer.MAX_VALUE; 

for(int i=begin;i<=end;i++){ 
    System.out.println("hehe"); 
} 

をこのコードスニペットは無限に実行され、私はこれは

ため
i<**=**end 

ですが、一部の人がいると言うことを理解することができますintおよびIntegerは異なる範囲を有する。本当ですか、なぜですか?

+0

'int'と' Integer'のlongLongを使用することをお勧めは、異なる範囲を持っていません。 'Integer'はその周りにクラスを持つ' int'です。 – khelwood

+0

本当ではありません。 'Integer'は内部に' int'フィールドを持ち、 'intValue'でそれを公開します –

+3

いいえ、そうではありません。何人かの人は間違ったことをたくさん言う。 StackOverflowで間違ったものを投稿する人もいます。 – Kayaman

答えて

6

intおよびIntegerは全く同じ範囲を有する。

1Integer.MAX_VALUEを追加すると数値オーバーフローが発生し、結果はInteger.MIN_VALUEになるため、プログラムは無限に実行されます。今度はInteger.MAX_VALUE以下です。

これが実用上の問題であれば、私はあなたの代わりにintInteger

+0

私はそれを理解しています、ありがとう、メッセージでちょうど混乱しました。前の投稿への私のコメントを参照してください。ありがとう – avalon

関連する問題