web-dev-qa-db-ja.com

Java 2つの整数を等しいまたは==と比較しますか?

私はJavaに非常に慣れていないので、2つの整数を比較する方法を知りたいですか?==仕事が完了したことを知っています。 (私が整数と言うとき、私は「整数」ではなく「int」を意味します。)私のコードは:

import Java.lang.*;
import Java.util.Scanner;
//i read 2 integers the first_int and second_int
//Code above
if(first_int.equals(second_int)){
//do smth
}
//Other Code

しかし、何らかの理由でこれは機能しません。Netbeansがエラーを返すことを意味します: "intを逆参照できません"なぜですか?

8
Konstantinos

intはプリミティブです。あなたはラッパーを使うことができます Integer のように

Integer first_int = 1;
Integer second_int = 1;
if(first_int.equals(second_int)){ // <-- Integer is a wrapper.

または、次のように値で比較できます(プリミティブ型であるため)

int first_int = 1;
int second_int = 1;
if(first_int == second_int){ // <-- int is a primitive.

JLS-4.1。タイプと値の種類 は(一部)と言っています

Javaプログラミング言語には、プリミティブ型( §4.2 )と参照型( §4. )の2種類があります。それに対応して、変数に格納でき、引数として渡され、メソッドによって返され、操作できる2種類のデータ値:プリミティブ値( §4.2 )と参照値( § 4. )。

15
Elliott Frisch

比較したい場合

1-two integer 
If(5==5)
2- char
If('m'=='M')
3 string
String Word="Word"
Word.equals("Word")
2
Modhy

Intはプリミティブなので、equalsは使用できません。 Integerをラッパーとして使用する方法

 void IntEquals(Integer original, Integer reverse) {
        Integer origianlNumber = original;
        Integer reverseNumber = reverse;

        if (origianlNumber.equals(reverse)) {
            System.out.println("Equals ");
        } else {
            System.out.println("Not Equal");
        }
1
kh3laghar

intはプリミティブ型です。これ自体は値を持っていますが、Integerはオブジェクトで、値を保持するために内部にプリミティブint型を持っています。 wrapper Integerを使用すると、compare、longValue、.. moreなどのより多くの操作を実行できます。

==整数の場合will not work the rang above -128 and 127。整数は、メモリ内でのみこの範囲までのキャッシュ値を保持します。この範囲を超えると、整数ラッパークラスをチェックする場合にのみ、equals()メソッドを使用する必要があります。

equals()メソッドは、参照場所に保存されている値をチェックします。

0
Fazil