본문 바로가기
Dev/Java

05-2. 다양한 함수(String 관련)

by YoonYeoJin 2023. 7. 25.

저번에는 random()함수를 알아보았는데

교육과정 중에서도 많이쓰고 알아두면 유용했던 String에 관련된 메소드를 정리해볼 계획이다.

 

1. charAt(index)

charAt(index)은 쉽게 말해 매개변수에 있는 인덱스의 문자를 반환하는 것이다.

거두절미하고 바로 코드로 알아보면 다음과 같다

YoonYeoJin이라는 문자열의 2번째 인덱스를 가져오는 메소드이다.

o가 반환되는 것을 확인할 수 있으며

charAt()안에 매개변수인 인덱스가 들어가면 해당 인덱스에 뭐가 있는지 반환해주는 메소드이다.

 

2. concat(String str)

문자를 합쳐주는 역할을 한다. 이 역시 코드로 바로 알아보자

출력문을 두개를 사용한 것을 볼 수 있는데 그 이유를 알아보자면

처음 str1을 출력하게 되면 최초에 선언한 '윤'만 출력이 되는 것을 확인할 수 있다.

즉, concat 메소드는 원본 문자열에 영향을 주지 않는다는 것을 확인할 수 있다.

이를 간단하게 하기 위해서는

String str2 = str1.concat("여진");

이와 같이 다른 변수에 저장을 하는 방법이 있겠다.

 

3. equal()

프로젝트를 할 때 로그인 등 다양한 기능을 구현할 때 기본적으로 많이 썼던 메소드이다.

String은 참조 변수형이기 때문에 동등 비교 연산자인 ==을 사용하면 종종 원하는 값이 출력되지 않을 때가 있다.

주소값을 비교하게 되면서 생기는 일인데

리터럴 자체를 비교하게 되는 equal() 메소드를 사용하면 이를 방지할 수 있다.

두가지 방법으로 String형 변수를 선언했다.

이때 동등비교연산자 ==를 사용하여 각각의 문자열이 같은지 비교하게 되면

첫번째는 true, 두번째는 false를 반환하는 것을 확인할 수 있다. 

이를 이해하기 위해서는 StringPool이라는 것을 알아야하는데 StringPool을 간략하게 표현해보자면

String str = ""; 으로 선언한 변수는 StringPool에 저장되는 반면, new를 사용해서 선언한 변수는 각각의 공간에 저장되는 것을 확인할 수 있다.

즉, 이런 경우를 방지하기 위해 equal()메소드를 사용하면 된다.

 

4. substring()

substring()은 원하는 인덱스와 인덱스 사이의 문자열을 출력할 수 있다.

두가지 방법을 사용해서 차이를 알아보자.

두가지 방법을 사용한 것을 볼수있는데

첫번째는 매개변수가 하나만 사용하게 되면 2번째 인덱스에서부터 끝까지 출력을 하게 된다.

두번째는 2번째 인덱스에서 4번째 인덱스 전까지 출력하게 된다.

 

5. toUpperCase() / toLowerCase()

upper는 대문자로 lower는 소문자로 바꿔주는 메소드이다.

간단한 코드로 살펴보면 다음과 같다.

간혹 본인확인을 할 때 대문자로 입력을 해야할 때 소문자로 써도 대문자로 자동으로 바뀌는 것을 볼 수 있는데,

이렇게 toUpperCase()를 사용한 경우라고 볼 수 있다.

 

6. trim()

trim은 문자열 앞뒤에 있는 공백을 제거해주는 메소드이다.

그런 경우는 없지만 회원가입 시 이름을 적는 칸에 공백을 사용해서 제출을 해서 " 윤여진"과 같은 식으로 개인정보가 저장된다면 이용에 큰 불편을 얻게 될것이다.

이럴 때 이런 trim 메소드를 사용하면 된다.

보이는 것과 같이 공백이 제거되어 출력이 되는 것을 확인할 수 있다.

만약 str2와 같이 애초에 공백이 없는 문자열인 경우에는 공백이 없어도 trim메소드에서 에러가 발생하거나 그런 경우 없이

원본 그대로를 반환하는 것을 확인할 수 있다.

 

오늘은 String 문자열에서 사용할 수 있는 메소드를 몇 개 알아보았는데,

다음에는 StringToken에 대해서 알아보려고 한다.

사실 사용한 적은 없던 걸로 기억하고 있지만 그래도 복습차원에서 정리를 해보려한다.

'Dev > Java' 카테고리의 다른 글

07.IO(1) - file, 바이트기반스트림  (0) 2023.07.30
06.StringTokenizer  (1) 2023.07.27
05-1. 다양한 함수(Math.random)  (1) 2023.07.25
04-2.ArrayCopy(깊은 복사)  (0) 2023.07.17
04-1.ArrayCopy (얕은 복사)  (0) 2023.07.17