오늘은 String 객체의 여러 기능을 알아보는 시간을 가질 것이다.
1. 문자열 데이터의 길이(글자수)를 리턴해주는 기능(method)
2. 문자열값의 비교 기능
3. 문자열에서 특정 char 얻어오기
4. 문자열 안에 특정 문자열이 포함되어 있는지 여부 확인
5. 문자열안에 특정 문자가 몇 번째 위치에 있는지
6. 문자열 결합 기능
7. 문자열이 특정한 문자열로 시작되는지 여부
8. 대소문자 변환
9. 문자열의 앞뒤 공백을 제거
10. 특정문자 바꿔치기
11. 문자열 잘라내기
12. 문자열값의 대소비교 [문자열 정렬할 때 사용됨]
13. 문자열을 특정문자를 기준으로 분리해서 여러 개의 문자열 배열로 리턴해줌.
문자열 객체 String
원래대로라면 String 객체를 선언해서 문자열을 넣기 위해선
Stirng s = new String ("Nice"); 를 작성해야 한다.
그러나 String s = "Nice"; 로도 줄여서 써도 된다.
하지만 여기서 문제가 발생하는데,
서로 다른 메모리 영역에 저장되는 점이다.
Stirng s = new String ("Nice"); 이렇게 쓰면 당연히 Heap 메모리에 저장이 된다.
(그리고 언제나 Heap 메모리에 새로 영역을 배정한다)
그러나 String s = "Nice"; 이라고 쓰면 자동으로 new String()을 써주긴 하지만
기존에 같은 문자열이 있다면
그 문자열의 주소값을 주게 된다.
즉, String s1 = "Hello"; 를 쓰고
그 후 String s2 = "Hello";를 쓰면
s1과 s2는 같은 주소를 가지게 된다는 것이다.
(new를 사용해 Heap메모리에 만들면 매번 새로 영역이 만들어지며, 그래서 참조변수는 항상 다른 주소값을 가지게 된다.)
그리고 String 객체는 immutable의 성질을 가진다.
즉 불변한다는 것이다. (바꿀 수 없다.!!)
1. 문자열 데이터의 길이(글자수)를 리턴해주는 기능(method)
이 기능은 String 객체에 포함된 주요 기능 중 하나이다.
내가 선언한 String 객체의 참조 변수 이름을 쓰고 .(마침표)를 눌러서 length를 찾아주면 된다.
그리고 찾은 값을 리턴값의 자료형에 맞게 받아야 하니 앞에 int를 선언해서
리턴값을 받아주면 된다.
2. 문자열값의 비교 기능

String 참조 변수에 점을 찍으면 equals를 찾을 수 있다.
그 안에 내가 비교할 값(문자열)을 넣어주면 된다.

그러나 equals로는 대소문자가 구분돼서 서로 다른 문자라 인식한다.(유니코드에서도 값이 다르기 때문에)
그래서 대소문자를 무시하고 같은 문자열인지 확인하는 메소드가 있다.
equalsIgnoreCase를 사용하면 된다.
3. 문자열에서 특정 char 얻어오기

문자열에서 특정 char 값을 받아 오는 메소드는
charAt이다.
우리가 아는 배열 index값대로 문자열도 첫 글자부터 0부터 시작해서 저장되어 있다.
다만 문자열의 길이를 넘어가는 index를 입력하면 에러가 난다. (주의하자!)
그래서 보통 반복문 등을 사용하면 1번 기능이었던
문자열 길이를 구하는 기능을 이용해서 반복문을 쓴다.
어제 공부한 Scanner에선 한문자값을 받는 것이 없었다.
하지만 이 기능을 이용하면 한문자값을 받아서 사용할 수 있다.
4. 문자열 안에 특정 문자열이 포함되어 있는지 여부 확인

메소드를 계속 보다 보면 직관적으로
영단어를 보면 그 기능을 대충 알 수 있다.
contains도 그렇다. 포함되어 있는지 여부를 묻는 것이다.
그래서 boolean 형으로 자료형을 받고
결과도 true 혹은 false로 나온다.
5. 문자열 안에 특정 문자가 몇 번째 위치에 있는지
indexOf라는 메소드를 통해 사용할 수 있다.
다만 같은 문자가 여러 개 있을 때 첫 번째 문자의 index 번호를 말해주기 때문에
마지막부터 찾을지, 처음부터 찾을지
그리고 특정 위치부터 검색할지 고려해서 사용해야 한다.
6. 문자열 결합 기능
문자열을 결합하는 기능은 concat이다.
다만 여기서 주의할 점이 String 객체는 값을 바꿀 수 없다.
그래서 새로운 참조변수를 만들어서 대입하는 방식을 써야 한다.
다만 concat은 잘 사용하지 않는다.
제대로 말하자면 기능은 사용하나 다른 방식으로 사용한다.
바로 '+'을 쓰면 같은 기능을 쓸 수 있기 때문에
위의 사진 밑에서 3번째 줄처럼 많이 사용한다.
7. 문자열이 특정한 문자열로 시작되는지 여부
말 그대로 문자열이 특정한 문자열로 시작되는지
그리고 특정문자열로 종료되는지 여부를 알 수 있는 기능이다.
간단하게 startsWith, endsWith으로 사용가능하다.
이때 주의해야 할 점은 띄어쓰기나 각종!,? 같은 문자도 포함되어야 확실하게
true, false 값이 출력된다는 점이다.
8. 대소문자 변환
toUpperCase와
toLowerCase는
문자열을 일괄적으로 소문자 혹은 대문자로 바꿔주는 기능이다.
우리가 항상 명심해야 하는 것은
참조변수에 다른 주소값을 넣을 순 있지만!
String 객체가 가진 값은 바꿀 수 없다는 것이다.
9. 문자열의 앞뒤 공백을 제거

앞서 특정 문자열로 시작되는지 끝나는지 알아보는 기능을 배웠는데,
만약 Hello를 저렇게 입력하는 사람이 있다면 말짱 꽝이다....
그래서 앞 뒤 공백을 제거해 줄 수 있는 기능이 있는데
바로 trim()이다. 쓰는 방법도 간단하다.
10. 특정문자 바꿔치기

특정 문자를 바꿔치기하는 기능이다.
replace("바뀔 문자", "바꿀문자")와 같은 형식으로 사용한다.
띄어쓰기 역시 문자이기 때문에
이를 없앨 수도 있다.(마지막 줄)
11. 문자열 잘라내기

내가 원하는 index부터 잘라낼 수 있는 기능이다.
substring(index번호)로 사용하며
내가 원하는 범위를 지정할 수도 있다.
12. 문자열값의 대소비교 [문자열 정렬할 때 사용됨]
compareTo는 문자열의 값을 비교할 수 있다.
int 값으로 결과가 리턴되지만 잘 쓰이지 않는다.
13. 문자열을 특정문자를 기준으로 분리해서 여러 개의 문자열 배열로 리턴해줌.

기존과 다르게
,(콤마)라든가 /(슬래시)라든가로 구분된
긴 문자열이 있을 수 있다.
(엑셀 파워쿼리에서 많이 쓰인다...)
이런 것을 자동으로 나눠주는 기능인데
배열로 나눠주기 때문에 다 나눠서 가지고 있으려면 배열을 써야 한다.
'# 개발 > Java' 카테고리의 다른 글
Java 연습문제 #4 (국비15일차) (0) | 2023.01.20 |
---|---|
Java #4 - 배열 객체 Array, for each문 (국비16일차) (0) | 2023.01.20 |
Java 연습문제 #3 - 숫자 야구 게임 만들기 (국비14일차) (0) | 2023.01.18 |
Java 연습문제 #2 - console 입력 (국비14일차) (0) | 2023.01.18 |
Java #2 - 키보드 입력, Scanner, 연산자, 제어문, 반복문 (국비14일차) (2) | 2023.01.18 |