<객체 비교와 equals() 메소드>
프로그램을 작성하다 보면 두 객체가 같은지 비교해야 하는 상황이 있다.
• == 연산자
== 연산자는 두 레퍼런스가 동일한 객체를 가리키는지 비교한다.
Point a = new Point(2,3);
Point b = new Point(2,3);
Point c = a;
if(a == b) // false
System.out.println("a==b"):
if(a == c) // true
System.out.println("a==c"):
실행결과 : a==c
위의 코드가 실행되면 2개의 Point 객체가 생성되고, 레퍼런스 a와 b는 이들을 각각 가리킨다.
• boolean equals(Object obj)
equals는 인자로 건네진 객체 obj와 자기 자신을 비교하여 두 객체의 내용이 같은지를 비교하는 메소드이다.
String a = new String("Hello");
String b = new String("Hello");
if (a == b) // false
System.out.println("a==b");
if (a.equals(b)) // true
System.out.println("a와 b는 둘 다 Hello입니다.");
실행결과 : a와 b는 둘 다 Hello입니다.
a와 b는 서로 다른 객체를 가리키므로 두 레퍼런스는 서로 다르며, a == b의 결과도 false이다.
그러나 a와 b가 가리키는 문자열은 같기 때문에 a.equals(b)의 결과는 true이다.
따라서 기본 타입의 값을 비교하기 위해서는 == 연산자를 사용하지만, 객체 비교를 위해서는 반드시 equals() 메소드를 사용해야 한다.
<StringBuffer 클래스>
StringBuffer 클래스는 java.long 패키지에 포함된 클래스로서 String 클래스와 같이 문자열을 다룬다.
String 객체의 경우 내부의 문자열을 수정할 수 없지만, StringBuffer 객체는 문자열을 저장하는 가변 버퍼를 가지고 있기 때문에 저장된 문자열의 수정이 가능하다.
StringBuffer 객체를 생성하는 예는 다음과 같다.
StringBuffer sb = new StringBuffer("java");
• 주요 메소드
• 활용
• 코드 예시
public class StringBufferEx {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer("This");
sb.append(" is pencil"); // 문자열 덧붙이기
System.out.println(sb);
sb.insert(7, " my"); // "my" 문자열 삽입
System.out.println(sb);
sb.replace(8, 10, "your"); // "my"를 "your"로 변경
System.out.println(sb);
sb.delete(8, 13); // "your" 삭제
System.out.println(sb);
sb.setLength(4); // 스트링 버퍼 내 문자열 길이 수정
System.out.println(sb);
}
}
This is pencil
This is my pencil
This is your pencil
This is pencil
This
<StringTokenizer 클래스>
StringTokenizer 클래스는 java.until 패키지에 포함되어 있으며, 하나의 문자열을 여러개의 문자열로 분리하기 위해 사용된다.
문자열을 분리할때 사용되는 기준 문자를 구분 문자(delimiter)라고 하고, 구분 문자로 분리된 문자열을 토큰(token)이라고 한다.
String query = "name=kitae&arr=seoul&age=21";
StringTokenizer st = new StringTokenizer(query, "&");
위의 예시에서는 '&'가 구분문자이다.
• 생성자와 주요 메소드
• 코드 예시
import java.util.StringTokenizer;
public class StringTokenizerEx {
public static void main(String[] args) {
StringTokenizer st = new StringTokenizer("홍길동/장화/홍련/콩쥐/팥쥐", "/");
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
}
}
홍길동
장화
홍련
콩쥐
팥쥐
'CS > 객체지향프로그래밍' 카테고리의 다른 글
[객체지향프로그래밍] #8 Nested Classes (0) | 2024.06.13 |
---|---|
[객체지향프로그래밍] #7 제네릭과 컬렉션 (0) | 2024.06.13 |
[객체지향프로그래밍] #5 상속 (0) | 2024.04.25 |
[객체지향프로그래밍] #4 클래스와 객체 (0) | 2024.04.21 |
[객체지향프로그래밍] #3 배열 (0) | 2024.04.18 |