[Java] 자바 문자열 (String)과 상수 문자열 (String) 그리고 equals() 메서드
유틸리티 클래스 : String
- 내부적으로 char[]을 이용하여 문자열을 처리한다.
- 문자열을 다루는 기능을 포함하고 있다.
- 즉, 문자를 저장하는 char[] 배열과 그 배열을 다루는 메서드를 구비한
데이터 타입이라 볼 수 있다.
- String 클래스는 immutable(변하지 않는) 객체이다.
한 번 값이 결정되면 변하지 않는다.
값을 바꾸려 하면 새로운 문자열 인스턴스가 자동 생성된다.
문자열 주소 비교 예제 1
public class Test02_1 {
- 실행결과 :
s1 == s2
상수 문자열
- new 연산자 없이 인스턴스를 생성한다.
- heap이 아니라 Constant Pool 이라는 상수만 모아두는 영역에서 따로 관리한다.
-중복해서 생성되지 않는다.
- 실행 결과 :
s1 == s2
equals() 메서드
문자열의 주소가 아니라 문자열의 '값'을 비교하고 싶다면 equals() 메소드를 이용해
야 한다. equals() 메서드는 s1에 저장된 주소로 찾아가서 그 인스턴스의 문자 배열을
보관한다. 그리고 s2에 저장된 주소로 찾아가서 그 인스턴스의 문자 배열을 보관
한다. 이 두 개의 문자 배열의 값을 하나씩 비교하여 끝까지 같다면 true를 리턴하고
같지 않다면 false를 리턴한다.
equals() 메서드 예제
public static void main(String[] args) {
- 실행 결과 :
s1 == s2
'Programming > java' 카테고리의 다른 글
[Java] 상속 (inheritance)과 Object 클래스 (0) | 2017.05.12 |
---|---|
[Java] String[] args (프로그램 아규먼트)란 무엇인가? (0) | 2017.05.11 |
[Java] 인스턴스 메서드 (instance method) (0) | 2017.05.11 |
[Java] 생성자 (constructor)와 오버로딩 (overloading) (0) | 2017.05.11 |
[Java] 스태틱 블록 (static block), 인스턴스 블록 (instance block), 생성자 (1) | 2017.05.11 |