2015-03-09 32 views
6

Tôi rất mới với Java và tôi muốn biết làm thế nào tôi có thể so sánh 2 số nguyên? Tôi biết == được công việc làm .. nhưng những gì về bằng? Điều này có thể so sánh 2 số nguyên không? (khi tôi nói số nguyên tôi có nghĩa là "int" không "Integer"). Mã của tôi là:Java So sánh 2 số nguyên với bằng hoặc ==?

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 

nhưng đối với một số lý do này không làm việc .. tôi có nghĩa là Netbeans mang lại cho tôi một lỗi: "int không thể dereferenced" Tại sao?

+4

'int' là một nguyên thủy (đặc biệt) loại, nó không phải là một đối tượng. Bạn có thể sử dụng '==' để so sánh nguyên thủy – MadProgrammer

+0

Vậy tại sao bằng tồn tại? chỉ cho chuỗi? – Konstantinos

+4

Không, 'equals' tồn tại để so sánh sự bình đẳng của bất kỳ' '' '' '' '' '' '' 'nào'. '==' so sánh địa chỉ bộ nhớ/thông tin tham chiếu. Hai trường hợp của một đối tượng có thể được coi là bình đẳng vì có nội dung bằng nhau, nhưng tham chiếu bộ nhớ của chúng không phải là – MadProgrammer

Trả lời

10

int là nguyên thủy. Bạn có thể sử dụng các wrapper Integer như

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

hoặc bạn có thể so sánh theo giá trị (vì nó là một loại nguyên thủy) như

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 nói (một phần)

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

Nhiều thông tin! cảm ơn nhiều! – Konstantinos

2

Nếu bạn muốn so sánh giữa

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

Vì int là nguyên thủy, bạn không thể sử dụng bằng. gì bạn có thể làm Sử dụng interger như wrapper

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"); 
     } 
Các vấn đề liên quan