-
학원 DAY 17. String 클래스기록 2022. 10. 3. 17:30
String 클래스
문자열을 표현하는 객체.
(문자열은 문자를 연이어 늘어놓은 것을 의미하므로 문자배열인 char배열과 같은 뜻이다. 그런데, 자바에서는 char배열이 아닌 String클래스를 이용해서 문자열을 처리하는 이유는 String클래스가 char배열에 여러가지 기능을 추가하여 확장한 것이기 때문이다. char배열을 사용하는 것보다 String클래스를 사용하는 것이 문자열을 다루기 더 편리하다. [출처] 자바의 정석 기초편)
문자열은 불변객체다. 한번 생성된 문자열은 절대로 변하지 않는다. (문자열은 읽을 수만 있을 뿐 내용을 변경할 수 없다. 변경가능한 문자열을 다루려면 StringBuffer클래스를 사용)
String객체를 생성하는 방법
String s = "abc"; String s = new String("abc"); char[] data = {'a', 'b', 'c'}; String s = new String(data);
String 클래스 주요 메소드
int length()
문자열의 길이를 반환한다. 공백도 길이에 포함된다.
boolean isEmpty()
빈 문자열(길이가 0인 문자열)인 경우 true를 반환한다.
boolean isBlank()
빈 문자열(길이가 0인 문자열), 공백으로 구성된 문자열도 true를 반환한다.
boolean equals(Object obj)
문자열의 내용을 비교해서 동등성 여부를 반환한다.
문자열의 내용이 일치하면 true를 반환한다. (대소문자는 서로 다른 내용으로 취급한다.)
Object의 equals(Object obj)를 메소드 재정의한 것이다.
boolean equalsIgnoreCase(String str)
문자열의 내용이 일치하면 true를 반환한다. (대소문자를 구분하지 않는다.)
// 엄청중요!! equals를 쓸 때 상수가 무조건 앞에 와야 함. 왜냐면 null.equals()는 오류가 남. // 이 메소드는 grade가 null 값을 인자로 전달받으면 NullPointerException 오류가 발생한다. public static void test1 (String grade) { if (grade.equals("골드")) { System.out.println("골드등급은 5%를 적립합니다."); } else if (grade.equals("실버")) { System.out.println("실버등급은 2%를 적립합니다."); } else if (grade.equals("브론즈")) { System.out.println("브론즈등급은 1%를 적립합니다."); } else { System.out.println("유효한 등급이 아닙니다."); } } // 이 메소드는 grade가 null값을 인자로 전달받으면 "유효한 등급이 아닙니다."가 출력된다. // 문자열 비교를 할 때 "문자열".equals(변수)의 형태로 작성하자. // 문자열 객체의 null은 오류 발생x // null 값을 가질 가능성이 더 적은 값이 앞에 위치해야 한다. public static void test2 (String grade) { if ("골드".equals(grade)) { System.out.println("골드등급은 5%를 적립합니다."); } else if ("실버".equals(grade)) { System.out.println("실버등급은 2%를 적립합니다."); } else if ("브론즈".equals(grade)) { System.out.println("브론즈등급은 1%를 적립합니다."); } else { System.out.println("유효한 등급이 아닙니다."); } }
엄청 중요!! -> test1의 경우, NullPointerException이 발생할 수 있기 때문에 test2 방식으로 작성할 것!!
boolean contains(CharSequence str)
지정된 문자열이 포함되어 있으면 true를 반환한다.
substring(int begin)
문자열에서 지정된 시작위치부터 문자열의 끝부분에 해당되는 문자열을 반환한다.
문자열의 위치는 0부터 시작한다.
substring(int begin, int end)
문자열에서 지정된 시작위치부터 지정된 끝위치의 바로 앞부분까지 해당되는 문자열을 반환한다.
indexOf(String str)
문자열에서 지정된 문자열이 처음으로 등장하는 위치를 반환한다.
지정된 문자열이 존재하지 않으면 -1을 반환한다.
indexOf(String str, int fromIndex)
fromIndex로 지정된 위치부터 찾아서 등장하는 위치를 반환한다.
lastIndexOf(String str)
문자열에서 지정된 문자열이 마지막으로 등장하는 위치를 반환한다.
boolean startsWith(String str)
문자열이 지정된 문자열로 시작하면 true를 반환한다.
boolean endsWith(String str)
문자열이 지정된 문자열로 끝나면 true를 반환한다.
String toUpperCase()
문자열에 대해서 대문자로 구성된 새로운 문자열을 반환한다.
String toLowerCase()
문자열에 대해서 소문자로 구성된 새로운 문자열로 반환한다.
*기존 문자열을 대문자나 소문자로 변환하는 것은 절대!!! 아니다. 문자열은 불변객체다.
한번 생성된 문자열은 바꿀 수 없다. 원래 것은 놔두고 새로 만드는 것이다!
String replace(CharSequence target, CharSequence replacement)
문자열에서 대상 문자열이 대체문자열로 변경된 새 문자열을 반환한다.
* 절대로 기존 문자열의 대상 문자열이 변경된 것이 아니다.
String trim()
문자열에서 문자열의 좌/우에 위치하는 의미없는 공백이 없는 새로운 문자열을 반환한다.
String[] split(String delim)
지정된 구문문자로 문자열을 잘라서 각 성분을 배열에 담아서 반환한다.
package day18; public class StringApp2 { public static void main(String[] args) { // 아래의 텍스트에서 성씨가 "이씨"인 사람만 출력하기 // String[] split(String delim) - 지정된 구문문자로 문자열을 잘라서 각 성분을 배열에 담아서 반환한다. String text = "이황,이이,김유신,강감찬,이순신,류관순,안중근,이성계,이방원"; // text가 참조하는 문자열을 ","를 기준으로 잘라서 각각의 이름들을 배열에 순서대로 저장해서 반환한다. // names <--- {"이황", "이이", "김유신", "강감찬", "이순신", "류관순", "안중근", "이성계", "이방원"} String[] names = text.split(","); for (String name : names) { if (name.startsWith("이")) { System.out.println(name); } } } }
String.valueOf(값)
지정된 값을 문자열로 변환해서 반환한다.
static메소드로 객체생성없이 바로 사용할 수 있다.
+) 정규표현식 : 자바스크립트에서 주로 쓰는데, 문자열 검색, 문자열 조사, 문자열 대체, 문자열 분리할 때 사용한다.
정규표현식을 잘 다룰 수 있다면 문자열을 표현하기 편해진다.
'기록' 카테고리의 다른 글
학원 DAY18. System 클래스 (0) 2022.10.03 학원 DAY17. StringBuilder, StringBuffer 클래스 (0) 2022.10.03 학원 DAY 17. API, Object, 접근제한자 (0) 2022.10.02 학원 DAY 16. 상속과 구현 (0) 2022.10.02 학원 DAY 15. 추상화, 인터페이스, 추상클래스 (0) 2022.10.02