2015-03-09 2 views
6

Я очень новичок в Java, и я хотел бы знать, как я могу сравнить 2 целых числа? Я знаю, что это делает работу ... но как насчет равных? Может ли это сравнить 2 целых числа? (когда я говорю, что целые числа означают «int», а не «Integer»). Мой код:Java Сравните 2 целых числа с равными или ==?

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 не может быть разыменовываются» Почему?

+4

'int' есть (специальный) примитивный тип, он не является объектом. Вы можете использовать '==' для сравнения примитивов – MadProgrammer

+0

Итак, почему существуют равные? только для строк? – Konstantinos

+4

Нет, 'equals' существует, чтобы сравнить равенство любых двух' Object '(где определено' equals'). '==' сравнивает адрес памяти/справочную информацию. Два экземпляра объекта могут считаться равными, потому что их содержимое равно, но их ссылки на память не являются – MadProgrammer

ответ

10

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. The Kinds of Types and Values говорит (частично)

There are two kinds of types in the Java programming language: primitive types (§4.2) and reference types (§4.3). There are, correspondingly, two kinds of data values that can be stored in variables, passed as arguments, returned by methods, and operated on: primitive values (§4.2) and reference values (§4.3).

+0

Много информативных! Большое спасибо! – Konstantinos

2

Если вы хотите сравнить между

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

Поскольку int примитивен, вы не можете использовать equals. Что вы можете сделать Используйте Interger обетрка

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"); 
     } 
Смежные вопросы