코딩테스트 준비/JAVA 코테

자바 String 클래스의 메소드 정리

김긍수 2021. 2. 27. 03:16

String 클래스의 메소드

자바에서 String은 내부적으로 char 배열의 객체이고 불변(immutable)객체입니다.

이 말은 String문자열끼리의 +연산은 변수 안에서 연산이 이루어지는 것 같지만 사실은 새롭게 객체를 생성하는 구조를 가지고 있습니다. 따라서 String 타입을 비교할 경우에는 ==이 아닌 equals()를 쓰는 이유입니다.

 

상수(Constant), 리터럴(literal)

상수와 리터럴은 둘다 변하지 않는 값을 의미합니다. 

코드적으로 말하자면, 상수는 변하지 않는 변수를 의미합니다.

참조변수가 상수로 지정될 때, 참조변수의 메모리의 주소값이 변하지 않는거지, 그 주소가 가르키는 데이터들까지 상수의 의미는 아니다.

자바에서는 final제어자를 쓴다.

final Test t1 = new Test();
t1 = new Test(); //XXX

//상수로 t1을 선언한 후 다시 t1을 바꿀 순 없지만, t1.num = 10; 은 가능하다.

리터럴(Literal)이란?

변하지 않는 데이터를 말한다.

인스턴스(클래스 데이터)는 리터럴이 될 수 없다. 

하지만 객체리터럴이라는 것이 있다. 데이터가 변하지 않도록 설계한 불변 클래스라는 것이다.

해당 클래스는 한번 생성하면 객체 안의 데이터가 변하지 않는데, 변할 상황이 되면 새로운 객체를 만들어 준다.

자바의 String은 리터럴이다.

 

상수 : 변하지 않는 변수 (메모리 주소값은 변하지 않음)

리터럴 : 변수의 값이 변하지 않음 (메모리 주소 안의 값)

 

 

String 메소드 정리

1. int length() : 문자열의 길이를 리턴한다.

2. char charAt(int i) : 문자열 i번째 인덱스의 character를 리턴한다.

3. String substring(int i) : 문자열 i번째 인덱스의 char부터 끝까지 리턴한다. 

4. String substring(int i, int j) : 문자열  i번째 인덱스부터 j-1번째 인덱스까지 리턴한다. 

       "abcde".substring(1,3) // return bc

5. String concat(String str) : s1.concat(s2) : s1문자열과 s2문자열을 연결시켜줍니다.

6. int indexOf(String s) : 해당 s 문자열이 시작되는 인덱스를 반환합니다.

7. int indexOf(String s, int i) : i 인덱스부터 시작하여 해당 s가 있는 인덱스를 반환합니다.

8. int lastIndexOf(String s) : 문자열 가장 마지막에 있는 s의 인덱스를 반환합니다.

9. boolean boolean equalsIgnoreCase(String s) : 대/소문자를 무시하고 문자열을 비교합니다.

10. int compareTo(String anotherString) : 문자열의 사전순값을 비교하여 리턴합니다. (A > B : -1, A = B : 0, A < B : 1)

11. int compareToIgnoreCase(String anotherString) : 대소문자를 무시하고 문자열의 사전순값을 비교하여 리턴합니다.

12. String toLowerCase() : 문자열을 소문자로 바꿔줍니다.

13. String toUpperCase() : 문자열을 대문자로 바꿔줍니다.

14. String trim() : 양쪽 끝의 공백을 제거하고 스트링을 복사합니다.

15. String replace