본문 바로가기
IT/Programming

Equals() 와 ==

by Jany 2009. 3. 13.
반응형

프로그램을 짜다 보면 두개의 변수 혹은 객체를 비교할때가 있다.

나도 간혹가다 실수를 하곤 하는데

이번기회에 알아보도록 하자.

"==" 그리고 "equals()"

 

변수값의 비교

"=="를 사용한다.

"equals()" 는 사용하지 못한다.

"equals()"는 메소드이다. 각 객체에서 쓸수 있는 메소드.

변수, 예를 들자면 int x = 0; int y = 0;

이 두개의 값을 비교하려면 "==" 를 사용해야한다.

두개의 값은 변수 이므로 "equals()" 메소드는 사용을 못한다.

 

쉽다.

 

그럼 객체를 비교해보자.

객체 비교에 있어서

"==" 와 "equals()"는 다르다.

"==" 는 두개의 객체가 동일한 객체인가를 비교한다.

"equals()"는 두 객체가 가지고 있는 값을 비교한다.

?????

쉽게 예를 들어보자.

우리집에는 소나타 1대가 있다.

엄마가 운전하는 차는 소나타다.

아빠가 운전하는 차는 소나타다.

 

철수네 집에도  소나타 1대가 있다.

철수네 아빠가 운전하는 차는 소나타다.

 

우리 엄마가 운전하는 차 ==  우리 아빠가 운전하는 차  ture

우리 엄마가 운전하는 차.equals(우리 아빠가 운전하는 차)  ture

// 엄마가 운전하는차와 아빠가 운전하는 차는 같은 차다.

 

우리 엄마가 운전하는 차 ==  철수네 아빠가 운전하는 차  false

우리 엄마가 운전하는 차.equals(철수네 아빠가 운전하는 차)  ture

// 엄마가 운전하는차와 철수네 아빠가 운전하는 차는 같은 타입의 소나타 차량이지만 차량번호는 다른 차다.

 

소스를 돌려보자

 

class  Compare
{
 public static void main(String[] args)
 {
  System.out.println("==");
  int x = 0;
  int y = 0;
  System.out.println("x : 0");
  System.out.println("y : 0");
  System.out.print("x == y      : ");
  System.out.println(x == y);
 // System.out.print("x .equals( y)      : ");
 // System.out.println(x .equals(y));

// 이부분은 컴파일 오류가 난다. 변수비교에 equals 메소드를 이용했으므로...
  
  System.out.println(".equals()");
  System.out.print("\"aaa\" == \"aaa\"      : ");
  System.out.println("aaa" == "aaa");
  System.out.print("\"aaa\".equals(\"aaa\")      : ");
  System.out.println("aaa".equals("aaa"));
  String s1 = new String("aaa");
  String s2 = new String("aaa");
  System.out.println("s1 : aaa");
  System.out.println("s2 : aaa");
  System.out.print("s1==s2      : ");
  System.out.println(s1==s2);
  System.out.print("s1.equals(s2)      : ");
  System.out.println(s1.equals(s2));
  System.out.print("\"aaa\".equals(s1)      : ");
  System.out.println("aaa".equals(s1));
  System.out.print("\"aaa\" == s1   : ");
  System.out.println("aaa" ==s1 );

}

}

 

 

C:\>javac Compare.java

C:\>java Compare
==
x : 0
y : 0
x == y      : true
.equals()
"aaa" == "aaa"      : true
"aaa".equals("aaa")      : true
s1 : aaa
s2 : aaa
s1==s2      : false
s1.equals(s2)      : true
"aaa".equals(s1)      : true
"aaa" == s1   : false

반응형

'IT > Programming' 카테고리의 다른 글

Axis 웹서비스 등록 및 배포 방법  (0) 2009.03.19
JAVA2WSDL 생성  (0) 2009.03.19
컴파일러와 인터프리터  (0) 2009.03.17
Apache AXIS를 이용한 웹서비스 강좌  (0) 2009.03.16
자바의 형변환  (0) 2009.03.13

댓글