새소식

Java/제대로 파는 자바

[제대로 파는 자바 (Java)-by 얄코] 문자열의 메소드들

  • -

해당 게시물은 [제대로 파는 자바 (Java) - by 얄코]를 수강한 내용을 바탕으로 작성하였습니다.

 

 

문자열은 불변 immutable

  • 문자열 스스로를 변경하는 메소드는 없음 - ”문자열 고쳐 쓰는 거 아니다”
    • 새 문자열 또는 다른 값을 반환
    • ⚠️ 문자열 변수에 다른 값을 넣을 수 없다는 뜻이 아님

⭐️ 반환값과 인자의 자료형 등을 살펴볼 것

 

 

 

.length() : 문자열 길이 반환

length()는 int를 반환

 

 

 

빈 문자열 여부

(1) .isEmpty() : 문자열의 길이가 0인지 여부

(2) .isBlank() :  공백(white space)을 제외한 문자열의 길이가 0인지 여부

 

 

.trim() : 문자열 앞뒤의 공백 제거

str3 자체를 트리밍하고 싶다면 str3 변수 자체에 적용할 것

 

 

.charAt(n) : 문자열 내 n번째 문자 반환

charAt은 int값을 받아 char 반환

 

 

문자(열)의 위치 반환

(1) .indexOf() : 일치하는 첫 문자(열)의 위치 반환

char 자료형은 묵시적으로 int로 형변환되어 사용되며 indexOf의 반환값은 int임을 알 수 있음

 

indexOf의 두 번째 인자가 4이므로 4번째 이후 자리부터 세야 함

 

 

 

(2) .lastIndexOf() 일치하는 마지막 문자(열)의 위치 반환

char 자료형은 묵시적으로 int로 형변환되어 사용되며 lastIndexOf의 반환값은 int임을 알 수 있음

 

lastIndexOf의 두 번째 인자가 12이므로 12번째 이전 자리부터 세야 함

 

※ 포함되지 않은 문자는 -1 반환

 

 

 

 

 

값 동일 여부 확인

(1) .equals() : 대소문자 구분하여 비교

(2) .equalsIgnoreCase() :  대소문자 구분없이 비교

 

 

 

포함 여부 확인

(1) .contains() : 포함 여부

contains는 CharSequence을 인자로 넣어서 boolean으로 반환

 

 

(2) .startsWith() :  (주어진 위치에서) 해당 문자열로 시작 여부

startsWith는 String을 인자로 넣어서 boolean으로 반환되며 두번째 인자가 4이므로 네번째 위치 이후부터 판단하면 됨

 

 

(3) .endsWith() : 해당 문자열로 끝남 여부

endsWith는 String을 인자로 넣어서 boolean으로 반환됨

 

 

 

.matches() : 정규표현식 일치 여부 확인

 

참고 - 🔗 정규 표현식 - 위키백과

 

 

 

 

 

문자열 비교

(1) .compareTo() : 사전순 비교에 따라 양수/음수 반환
     → 해당 값을 정렬 등에 사용 가능

compareTo는 String을 인자로 넣어서 int를 반환함

 

 

(2) .compareToIgnoreCase() : 대소문자 구분 없이 사전순 비교하여 양수/음수 반환

 

 

 

대소문자 변환

 

(1) .toUpperCase() : 모두 대문자로 변환

(2) .toLowerCase() : 모두 소문자로 변환

toUpperCase와 toLowerCase는 String을 반환함

 

"Hi! How are you? I'm fine. Thank you!"와 같이 대소문자가 섞여 있는 텍스트가 "how"를 포함하는지 확인 시 "how"가 텍스트에서 대문자를 포함하여 적혀있을 수도 있기 때문에 모두 대문자/소문자로 바꿔서 비교하여야 정확하게 포함 여부를 확인할 수 있음

★메서드 체이닝 → String을 반환하는 메서드들은 반복해서 사용가능

 

 

 

.concat() : 이어붙이기

concat은 string을 인자로 받아 string으로 반환하므로 메서드 체이닝이 가능함

 

 

※  +연산자와의 차이

 

1. concat에는 문자열만 이어붙일 수 있음

 

 

2. concat은 필요 시에만 새 인스턴스 생성

 

 

3. null이 포함될 경우 +연산자는 null과 이어붙이기가 가능하지만 concat은 NullPointerException 발생

 

 

4. ★"다중 연산 시" 생성되는 문자열 인스턴스의 수가 다름★

concat은 매번 문자열을 반환하여 메모리를 더 많이 차지함

  • + 연산 → 다중 연산시 메모리 절약
    • ⚠️ 반복 연산 (이후 배울 for 루프 등) 에는 무의미
    • 반복 연산시에는 명시적으로 StringBuilder... append 사용
  • 성능이 중요하다면 이후 배울 StringBuilder, StringBuffer 등 사용
    • 그렇지 않을 시 상황에 따라 메서드 체이닝 등의 편의를 위해 concat 사용

 

 

 

 

 

.repeat(횟수) : 문자열을 주어진 정수만큼 반복하기

repeat은 int를 인자로 받아 string을 반환함

 

 

 

.substring() : ~번째 문자부터 (~번째 문자 전까지) 잘라서 반환

 

substring은 int를 인자로 받아 string으로 반환함

 

 

 

 

치환

(1) .replace(앞, 뒤) : 주어진 앞의 문자(열)을 뒤의 문자(열)로 치환

치환하려는 문자열의 길이가 달라도 상관없음

 

replace는 string을 반환하므로 메서드 체이닝 가능

 

 

 

(2) .replaceAll(앞, 뒤) : 주어진 앞의 정규표현식에 일치하는 모든 부분을 뒤의 문자(열)로 치환

(3) .replaceFirst(앞, 뒤) : 주어진 앞의 정규표현식에 일치하는 부분 중 첫 번째만 뒤의 문자(열)로 치환

 

 

 

 

 

 

문자열을 배열로 반환

(1) .toCharArray() : 문자열을 분할하여 문자열의 배열로 반환

(2) .split() : 주어진 기준으로 (~개까지) 분할하여 문자열 배열로 반환

 

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.