코린이의 소소한 공부노트

String 클래스 본문

Java

String 클래스

무지맘 2022. 2. 6. 16:32

String 클래스는 문자배열(char[])에 기능(메서드)를 결합해놓은 것을 말한다. char[]로 문자열을 나타내도 크게 상관은 없지만, 사용자에게 여러 메서드를 제공해서 편의성을 높이기 위해 문자열을 클래스로 만들어놓은 것이다.

왼쪽 str은 문자열, 오른쪽 arrChar는 문자 배열이다. 변수 이름을 쓰고 마침표를 찍으면 사용 가능한 메서드 또는 상수들이 나오는데, 왼쪽에는 스크롤이 생길 정도로 여러 가지가 있는 반면 오른쪽은 스크롤도 생기지 않는 것을 볼 수 있다. 즉 문자열에 더 많은 기능이 제공되고 있다는 것이다.

 

String 클래스의 메서드는 여러 가지가 있지만, 자주 쓰는 몇 가지만 소개하겠다.

1. char charAt(int index): 해당 인덱스의 문자를 반환한다.

//     index  0123456
String str = "abcdefg";
System.out.println(str.charAt(3)); // 'd'

 2. int length(): 문자열의 길이를 반환한다.

//     index  0123456
String str = "abcdefg";
System.out.println(str.length()); // 7
// 메서드는 ()를 꼭 사용한다.

3. String substring(int from, int to): 문자열에서 from 이상 to 미만의 문자열을 반환한다.

//     index  0123456
String str = "abcdefg";
System.out.println(str.substring(2,5)); // "cde"
// to를 생략하면 to 자리에 str.length()가 들어간다.
// 즉, to를 생략하면 끝까지로 간주한다.
System.out.println(str.substring(2)); // "cdefg"

4. boolean equals(Object obj): 문자열의 내용이 같으면 true, 다르면 false를 반환한다.

String str = "abcdefg";
String str1 = "gfedcba";
String str2 = "abcd" + "efg";
System.out.println(str.equals(str1)); // false
System.out.println(str.equals(str2)); // true

5. char[] toCharArray(): 문자열을 문자배열(char[])로 변환해서 반환한다.

String str = "abcdefg";
char[] arr = str.toCharArray();
for (int i=0 ; i<arr.length ; i++) // 배열의 길이는 상수이므로 ()가 없다.
	System.out.print(arr[i] + " "); // a b c d e f g

[쿠키글] String 클래스는 내용을 변경할 수 없다.

String str1 = "abc";
String str2 = "def";
str1 += str2;
System.out.println(str1); // "abcdef"

str1의 내용 "abd"와 str2의 내용 "def"를 붙여서 str1에 저장했다. str1의 내용을 출력해보니 우리의 예상대로 결과가 "abcdef"로 나왔다. 그런데 이게 사실은 str1의 저장된 값이 바뀐 게 아니다.

위 코드에서 일어난 일을 순서대로 그려보면 다음과 같다.

String클래스 변수에 저장된 내용은 읽기 전용(read only)이라서, 내용이 변경되면 새로운 저장공간을 찾아 그곳에 변경된 내용을 저장하고 그 저장공간의 주소가 참조 변수에 업데이트 된다. 그래서 우리 눈에는 저장된 값이 바뀐 것처럼 보이는 것이다.

'Java' 카테고리의 다른 글

객체지향 언어의 도입 배경과 특징  (0) 2022.02.20
배열 (5) Arrays클래스  (0) 2022.02.20
배열 (4) 2차원 배열  (0) 2022.01.24
배열 (3) 활용 예시  (0) 2022.01.20
배열 (2) 초기화, 출력  (0) 2022.01.19