이번 게시글에선 주로 사용하는 문자열 관련 메서드를 알아봅시다.
주의할 점은 String 객체는 불변이기 때문에 (Strring Class (1) - String Pool과 Immutable 참고) 해당 메서드들이 객체가 가지고 있는 값을 변경할 수 없다는 점을 알아두셔야 합니다.
문자열과 숫자 간 형 변환
우선 형변환부터 알아보겠습니다. 여기서 알아볼 형변환은 숫자와 문자열 간 형 변환입니다.
//int => String
int number1 = 0;
String text1 = String.valueOf(number1);
System.out.println(text1); //0
//String => int
String text2A = "10";
String text2B = "hello";
int number2A = Integer.valueOf(text2A);
int number2B = Integer.valueOf(text2B); //numberBerFormatException 발생
System.out.println(text2A); //10
//String + int인 경우 문자열로 자동형변환
System.out.println("my height is " + 178); //my height is 178
예시에는 정수에만 한정되어 있지만 다른 숫자 타입인 long, float 등도 사용가능합니다.
valueOf
말고 parseXXX
와 같은 메서드들도 존재하지만 타입에 따라 메서드 이름이 계속 바뀌기 때문에 상당히 번거롭습니다.
엄연히 말하면 다른 차이점도 있지만 컴파일러가 알아서 이를 처리해주기 때문에 사용하는 입장에서는 큰 차이가 없습니다. 이에 따라 형변환 시에는 valueOf
메서드를 사용하시면 되겠습니다.
주요 메서드
이제 자주 사용되는 문자열 메서드를 알아보도록 합시다. 한꺼번에 나열하면 정신없으니 "반환값이 문자열인 메서드"부터 나열하겠습니다.
//대소문자로 반환
String text1 = "Hello";
System.out.println(text1.toUpperCase()); //HELLO
System.out.println(text1.toLowerCase()); //hello
//공백 제거
String text2 = " Hello ";
System.out.println(text2.trim()); //Hello
//하위 문자열 반환
String text3 = "Hello";
System.out.println(text3.substring(2)); //llo
System.out.println(text3.substring(0, 2)); //He
System.out.println(text3.substring(100)); //StringIndexOutOfBoundsException 발생
//특정 문자열을 대체해 반환
String text5 = "Hello World";
System.out.println(text5.replace("Hello", "Bye")); //Bye World
다음은 "반환값이 문자열이 아닌 메서드"들 목록입니다.
//문자열 나누어 배열로 반환
String text6 = "Hello World";
String[] result = text6.split(" ");
System.out.println(Arrays.toString(result)); //[Hello, World]
//특정 문자열의 인덱스 반환
String text7 = "Hello World";
System.out.println(text7.indexOf("Hello")); //0
System.out.println(text7.indexOf("#")); //-1
System.out.println(text7.lastIndexOf("o")); //7
System.out.println(text7.lastIndexOf("#")); //-1
//문자열의 길이 반환
String text = "Hello world";
System.out.println(text.length()); //11
//하위 문자 반환
String text4 = "hello";
System.out.println(text4.charAt(0)); //h
System.out.println(text4.charAt(100)); //StringIndexOutOfBoundsException 발생
System.out.println(text4.charAt(text4.length() - 1)); //마지막 문자 d 반환
다음은 "반환값을 조건식으로 사용할수 있는 메서드"들 목록입니다.
//빈 문자열(길이가 0) 조건
String text8A = "";
String text8B = " ";
String text8C = "Hello";
System.out.println(text8A.isEmpty()); //true
System.out.println(text8B.isEmpty()); //false
System.out.println(text8C.isEmpty()); //false
//특정 문자열로 시작되거나 끝나는 조건
String text9 = "Hello";
System.out.println(text9.startsWith("H")); //true
System.out.println(text9.startsWith("#")); //false
System.out.println(text9.endsWith("o")); //true
System.out.println(text9.endsWith("#")); //false
//특정 문자열이 포함되는 조건
String text10 = "Hello World";
System.out.println(text10.contains("Hello")); //true
System.out.println(text10.contains("Bye")); //false
그 외 정적 메서드
String.join
과 String.format
메서드가 있으며 모두 반환값이 String입니다.
//문자열 사이 특정 문자열 결합
String[] texts = {"apple", "banana", "grape"};
System.out.println(String.join(",", texts)); //apple,banana,grape
System.out.println(String.join(",", "apple", "banana", "grape")); //apple,banana,grape
//문자열 형식 지정
String text = "Seven";
int num = 7;
System.out.println(String.format("숫자 : %d, 문자 %s", num, text)); //숫자 : 7, 문자 Seven
'Java > Grammer' 카테고리의 다른 글
Simple Data Structure (1) - 공통 메서드 (0) | 2022.04.23 |
---|---|
String Class (3) - 정규표현식 (0) | 2022.04.02 |
String Class (1) - Immutable과 StringBuilder/StringBuffer (0) | 2022.03.26 |
추상클래스와 인터페이스의 차이 (0) | 2022.01.16 |
Call by value (0) | 2021.12.28 |