java.lang패키지3 : String 클래스, StringBuffer와 StringBuilder 클래스의 메서드
String 클래스의 특징과 객체 생성
- 가장 많이 사용되는 클래스 1위!
- 기본특징
객체생성방법 2가지
- new 키워드 : heap메모리공간에 새로운 문자열을 저장
- “”문자열할당 : 상수저장공간(Constant Pool)에 새로운 문자열을 저장.
- 중복된 값 무시.
- 메모리절약에 유리(아래 이미지 참조).
- 참고링크 : equals()와 ==연산자차이점, String Pool
String 주요 메서드
선언부 | 설명 |
---|---|
public int length() | 주어진 문자열의 길이를 리턴 |
public char charAt(int index) | index에 해당하는 문자를 리턴. 없는경우 IndexOutOfBoundsException |
public int indexOf(int ch) | 문자열내에서 ch의 index를 리턴. 없을경우 -1 |
public boolean equals(Object o) | o의 문자열의 내용을 비교해서 결과를 boolean타입으로 리턴 |
public boolean equalsIgnoreCase(String s) | 대소문자 구별없이 s의 문자열의 내용이 같은지 boolean타입으로 리턴 |
public String replace(char oldChar, char newChar) | 문자열에서 oldChar를 찾아서 newChar로 변경된 새로운 문자열을 리턴 |
public String substring(int beginIdx, int endIdx) | 문자열의 beginIdx에서 endIdx앞까지 잘라서 리턴 |
public String trim() | 문자열 좌우 공백을 없앤 결과를 리턴 |
public boolean matches(String regex) | 문자열이 정규표현식 regex에 부합되는지 여부를 boolean타입으로 리턴 |
public String[] split(String regex) | 문자열을 주어진 정규표현식으로 나눈 후 배열에 담아서 리턴 |
charAt() 예시
1 | String ssn = "000101-4111111"; |
equalsIgnoreCase()예시
1 | String s = "HI"; |
replace() 예시
- 전화번호의 뒷자리를 별표표시하는 방법
1 | String hp = "010-1234-5678"; |
- 전화번호의 하이픈을 없애는 방법
1 | System.out.println("하이픈제거 폰번호 :"+hp.replace("-", "")); |
split()과 matches() 예시
- 정규표현식을 파라미터로 받는다.
- 참고링크 : 정규표현식
- split()예시 :
1 | String str = "Hi java world"; |
- split()과 matches()예시
1
2
3
4
5
6
7
8
9
10
11public static void main(String[] args) {
String str = "Hi java world";
String[] sResult = str.split("[a ]");
for(int i=0; i<sResult.length;i++){
System.out.println(i+" : "+sResult[i]);
}
String nameRule = "[a-zA-Z가-힣]{2,5}";
System.out.println(str.matches(nameRule));
System.out.println("Hi".matches(nameRule));
System.out.println("Hijavaworld2".matches(nameRule));
}
StringBuffer와 StringBuilder 클래스의 메서드
String클래스는 불변성 클래스이기때문에 문자열 연산에 제약이 많음
1
2
3
4
5
6
7
8
9
10sql = "abc"; //"abc"
sql.toUpperCase(); //"ABC"
sql; //"abc"
//대문자 ABC가 sql에 저장되지 않는다. String은 불변성 클래스이다.
//따라서 새로운 변수에 담아쓰는 수 밖에 없다.
str = sql.toUpperCase(); //"ABC"
str //"ABC"
sql //"abc"- 따라서 문자열 연산에 적합한 StringBuffer와 StringBuilder 클래스 사용가능.
- Buffer(버퍼) : 배열형태. 데이터를 임시로 저장하는 공간.
StringBuffer와 String의 차이점
- 여러 차이점 중에 불변성유무가 있다.
1 | //String |
- 따라서 문자열 연산에 적합한 StringBuffer와 StringBuilder 클래스 사용가능.
주요 메서드
- 여기서 P는 Object, String, StringBuffer, charSequence, Char[], Boolean, char, int, long, float, double이 올 수 있다.
선언부 | 설명 |
---|---|
public StringBuilder append(P param) | 현재 버퍼의 맨 뒤에 param을 추가한 후 StringBuilder타입으로 리턴 |
public String toString() | 버터의 내용을 문자열로 리턴 |
append()와 toString()예시
1 | StringBuilder b = new StringBuilder("서면-대연-광안-수영"); |