출간일 2016년 11월 28일
판매가 2000원
형태 ebook
이 책의 모든 내용은 http://ehpub.co.kr에 공개하고 있습니다.
학습에 도움이 되시면 ebook을 구입하여 소장하시면 감사하겠습니다.
언제나 휴일 출판사의 수익금의 대부분은 아프리카에 기부하고 있습니다.
6.2.2 String 클래스의 비교
Java 언어에서 == 연산은 기본 형식은 갖고 있는 값의 일치 여부를 반환하며 클래스 형식은는 같은 개체를 참조하는지 여부를 반환합니다.
예를 들어 정수 형식 변수 i1과 i2가 있을 때 == 연산의 결과는 값이 같은지 여부입니다.
int i1= 3;
int i2= 3;
System.out.print("i1==i2:");
System.out.println(i1==i2);
사용자가 정의한 클래스 형식을 == 연산으로 비교할 때는 같은 개체를 참조하는지 여부를 반환합니다.
MyClass mc1 = new MyClass(1);
MyClass mc2 = new MyClass(1);
MyClass mc3 = mc1;
위의 코드에서는 같은 값을 갖는 MyClass 형식 개체 두 개 생성하여 mc1과 mc2 변수에 대입하고 mc1이 참조하는 개체를 mc3 변수도 참조하게 대입하였습니다. 이 때 mc1과 mc2를 == 연산으로 비교하면 값은 갖지만 다른 개체이므로 false를 반환합니다. 물론 mc1과 mc3는 같은 개체를 참조하므로 == 연산으로 비교한 결과는 true입니다.
System.out.print("mc1==mc2:");
System.out.println(mc1==mc2);
System.out.print("mc1==mc3:");
System.out.println(mc1==mc3);
String 클래스 형식은 == 연산으로 비교할 때는 기본 형식처럼 같은 값인지 여부를 반환합니다.
String str1 = new String("1");
String str2 = new String("1");
String str3 = str1;
위는 “1” 문자 집합을 갖는 두 개의 String 개체를 생성하여 str1변수와 str2 변수에 대입하였습니다. 그리고 str1을 str3변수에 대입하여 같은 개체를 참조하게 하였습니다. String 형식도 클래스 형식이므로 str1과 str2를 == 연산으로 비교하면 문자 집합체가 같지만 다른 개체이므로 false를 반환하고 str1과 str3를 == 연산으로 비교하면 true를 반환합니다.
다음 예는 기본 형식과 개발자가 정의한 클래스 형식 및 String 형식을 == 연산으로 비교한 결과를 확인하는 예제입니다.
//사용자 정의 클래스 public class MyClass { int value; public MyClass(int value){ this.value = value; } } |
//비교 연산자 사용 예 public class Program { public static void main(String[] args){ //기본 형식 비교 int i1= 3; int i2= 3; System.out.print("i1==i2:"); System.out.println(i1==i2);
//일반 클래스 형식 비교 MyClass mc1 = new MyClass(1); MyClass mc2 = new MyClass(1); MyClass mc3 = mc1; System.out.print("mc1==mc2:"); System.out.println(mc1==mc2); System.out.print("mc1==mc3:"); System.out.println(mc1==mc3);
//String 클래스 형식 비교 String str1 = new String("1"); String str2 = new String("1"); String str3 = str1; System.out.print("str1==str2:"); System.out.println(str1==str2); System.out.print("str1==str3:"); System.out.println(str1==str3); } } |
i1==i2:true mc1==mc2:false mc1==mc3:true str1==str2:false str1==str3:true |
[소스 6.4] 비교 연산자 사용 예
그런데 실제 프로그래밍에서 서로 다른 개체이지만 String 개체의 값인 문자 집합체가 같은지 비교하고 싶을 때가 많습니다. 이 때는 equals 메서드를 이용하면 서로 다른 개체여도 값인 문자 집합체가 같은지 여부를 확인할 수 있습니다.
다음 예제는 == 연산과 equals 메서드로 문자열을 비교하는 예제입니다.
//String 형식을 비교 연산자와 equals 메서드로 비교 예 public class Program { public static void main(String[] args){ String str1 = new String("1"); String str2 = new String("1"); String str3 = str1;
System.out.print("str1==str2:"); System.out.println(str1==str2); System.out.print("str1==str3:"); System.out.println(str1==str3);
System.out.print("str1.equals(str2):"); System.out.println(str1.equals(str2)); System.out.print("str1.equals(str3)"); System.out.println(str1.equals(str3)); } } |
str1==str2:false str1==str3:true str1.equals(str2):true str1.equals(str3)true |
[소스 6.5] String 형식을 비교 연산자와 equals 메서드로 비교 예
[Java] 6.2.3 String 클래스의 비교에서 자주하는 실수
'언어 자료구조 알고리즘 > 디딤돌 Java 언어 Part1' 카테고리의 다른 글
[Java] 6.2.7 String 클래스 멤버 중에 특정 인덱스의 문자 및 문자열 길이 (0) | 2016.11.17 |
---|---|
[Java] 6.2.6 String 클래스 멤버 중에 변환한 문자열 만드는 메서드 (0) | 2016.11.17 |
[Java] 6.2.5 String 클래스 멤버 중에 특정 문자나 문자열의 위치 확인 (0) | 2016.11.17 |
[Java] 6.2.4 String 클래스 멤버 중에 판별에 사용하는 멤버 메서드 (0) | 2016.11.17 |
[Java] 6.2.3 String 클래스의 비교에서 자주하는 실수 (0) | 2016.11.17 |
[Java] 6.2.1 String 클래스의 생성자 (0) | 2016.11.16 |
[Java] 6. 2 String 클래스 (0) | 2016.11.16 |
[Java] 6.1 열거형 (0) | 2016.11.15 |
[Java] 6. 배열 및 기본 문법들 (0) | 2016.11.15 |
[Java] 5. 6 모든 클래스의 super 클래스인 Object (0) | 2016.11.14 |