1️⃣ String배열의 선언과 생성
String[] name = new String[3]; //3개로 이루어진 문자열을 담을 수 있는 배열
배열의 타입이 String인 것도 int배열의 선언과 똑같이 한다.
3개의 String타입의 참조변수를 저장하기 위한 공간이 생기고 참조형 변수의 기본값은 null이다. 그래서 각 요소의 값은 null로 초기화된다. 여기서 null은 어떤 객체도 가리키지 않는 뜻.
아래는 타입별로 변수들의 기본값을 정리한 것.
자료형 | 기본값 |
boolean | false |
char | '\u0000' |
byte, short, int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d 또는 0.0 |
참조형 변수 | null |
2️⃣ String배열의 초기화
String[] name = new String[3];
name[0] = "Kim";
name[1] = "Lee";
name[2] = "Park";
역시 int와 같이 초기화할 수 있다. 배열의 각 요소에 문자열을 지정하면 된다.
또한, 괄호 {}를 사용하면 간단하게 초기화할 수도 있다.
String[] name = new String[] {"Kim", "Lee", "Park"};
String[] name = { "Kim", "Lee", "Park" }; // new String 생략 가능
String 클래스만 "Kim"과 같이 큰따옴표만으로 간략하게 표현하는 것이 허용되지만, 원래 String은 클래스이므로 new연산자를 통해서 객체를 생성해야 한다.
String[] name = new String[3];
name[0] = new String("Kim");
name[1] = new String("Lee");
name[2] = new String("Park");
기본형 배열이 아닌 경우, 참조형 배열의 경우에는 배열에 저장되는 것은 객체의 주소이다.
참조형 배열을 객체 배열이라고도 한다.
3️⃣ char배열과 String클래스
문자열을 저장할 때 String타입의 변수를 사용했다. 문자열이라는 용어의 뜻은 '문자를 연이어 늘어놓은 것'을 의미한다. 문자배열인 char배열과 같은 뜻이다.
자바에서 char배열이 아닌 String클래스를 이용해서 문자열을 처리하는 이유는 String클래스가 char배열에 여러 가지 기능을 추가해서 확장한 것이기 때문이다. 그래서 char배열보다 String클래스를 사용하는 것이 문자열을 다루기 편리하다.
C언어에선 문자열을 char배열로 다룬다. 객체지향언어인 자바에서는 char배열과 그에 관련된 기능들을 묶어서 클래스에 정의한다. 서로 관련된 것들끼리 데이터와 기능을 구분하지 않고 함께 묶는다.
위에서 언급한 '기능'은 함수를 의미한다. 메서드는 객체지향 언어에서 '함수'대신 사용하는 용어일 뿐 함수와 같은 의미이다.
char배열과 String클래스는 또 중요한 차이가 하나 더 있다. String객체(문자열)은 읽기만 가능하고 내용을 변경할 수 없다.
하여 아래의 예시는 새로운 내용의 문자열이 생성이 된 것이다.
String name = "Lee";
name = name + "96"; // name96이라는 새로운 문자열 저장
System.out.println(name); // 출력
📢 String클래스의 주요 메서드
메서드 | 설명 |
char charAt(int index) | 문자열에서 해당 위치(index)에 있는 문자를 반환 |
int length() | 문자열의 길이를 반환 |
String substring(int from, int to) | 문자열에서 해당 범위(from~to)에 있는 문자열을 반환 |
boolean equals(Object obj) | 문자열의 내용이 obj와 같은지 확인 같으면 true 다르면 false |
char[] toCharArray() | 문자열을 문자배열(char[])로 변환해서 반환 |
1) charAt
문자열에서 지정된 index에 있는 한 문자를 가져온다. 배열에서 '배열이름[index]'로 index에 위치한 값을 가져오는 것과 같다. 배열과 똑같이 charAt메서드의 index값은 0부터 시작함.
String str = "ABCDE";
char ch = str.charAt(3); // 문자열 str의 4번째문자 'D'를 ch에 저장 (index는 0부터)
2) substring()
substring()은 문자열의 일부를 뽑아낼 수 있다. 주의할 것은 범위의 끝은 포함되지 않는다. 예시로 index의 범위가 1~5라면 5는 범위에 포함되지 않는다.
String str = "ABCDEF";
String tmp = str.substring(1,4); // str에서 index범위 1~4의 문자들을 반환한다.
System.out.println(tmp); // "BCD" 출력
3) equals()
문자열의 내용이 같은지 다른지 확인한다. 기본형 변수의 값을 비교하는 경우 '=='연산자를 사용한다. 하지만 문자열의 내용을 비교할 때는 equals()를 사용해야 함.
주의할 점은 이 메서드는 대소문자를 구분한다. 대소문자를 구분하지 않고 비교하려면 equals() 대신 equalsIgnoreCase() 를 사용해서 비교한다.
String str = "ABC"
if (str.equals("ABC")) { // str와 "ABC"내용이 같은지 확인
...
}
참고자료 -
'Java' 카테고리의 다른 글
[Java] 객체지향언어, 클래스, 객체 정리 (4) | 2023.01.05 |
---|---|
[Java] JVM 메모리 구조 (0) | 2022.12.29 |
[Java] 배열과 배열의 복사 (0) | 2022.12.22 |
[Java] 자주 발생하는 기본적인 에러와 해결 (0) | 2022.12.20 |
[Java] 기본형(Primitive type) - 논리, 문자형 (2) | 2022.12.15 |