== 연산자와 equals() 메소드의 차이점
== 연산자는 두 변수의 값이 같은가를 물어보는데 반해 equals() 메소드는 객체의 내용이 같은가를 물어본다
== 연산자는 기본 자료형이나 레퍼런스에 사용될 수 있지만, equals() 메소드는 레퍼런스 타입에서만 사용할 수 있다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | public class Equal { public static void main(String args[]) { String a = new String( "abc" ); String b = "abc" ; String c = b; String d = a; StringBuffer e = new StringBuffer( "abc" ); StringBuffer g = e; if (a==b) { System.out.println( "a==b" ); } // if(a==e) // { // System.out.println("a==e"); // } if (c==b) { System.out.println( "c==b" ); } if (b.equals(a)) { System.out.println( "b.equals(a)" ); } if (b.equals(e)) { System.out.println( "b.equals(e)" ); } } } |
변수 a,b,c,d 는 String 타입
e.g 는 StringBuffer 타입
- String 타입과 StringBuffer 타입은 서로 다른 레퍼런스 타입이기 때문에 == 연산자를 이용해서 같은지 여부를 알아볼수 없다
이러한 경우에 == 연산자를 사용하면 컴파일 에러가 발생한다
'Study > JAVA' 카테고리의 다른 글
JDBC 관련 클래스 (0) | 2012.08.27 |
---|---|
JDBC (0) | 2012.08.27 |
java.lang.NullPointerException 에러 (0) | 2012.08.17 |
annotation (1) | 2012.08.03 |
IoC(Inversion of Control) (0) | 2012.08.03 |