I. String클래스
# String 클래스의 메서드
1. length()
2. equals() - 대소문자를 구별하여 두 문자열을 비교함
3. equalsIgnoreCase() - 대소문자를 무시하고 두 문자열을 비교함
4. charAt(인덱스) - 해당 인덱스에 위치한 문자1개를 리턴함
5. substring()
- substring(시작인덱스) - 시작인덱스부터 모든 문자열을 추출함
- substring(시작인덱스, 끝인덱스) - [시작인덱스 이상] [끝인덱스 미만]에 해당하는 문자열을 추출함
6. concat(추가할 문자열)
7. indexOf( "인덱스를 찾고자하는 문자" ) - [지정한문자]의 인덱스를 리턴함 / 없으면 -1을 리턴함.
8. lastIndexOf("인덱스를 찾고자하는 문자") - 탐색을 뒤에서부터 역순으로 검색하여 [지정한문자]의 인덱스를 리턴함.
- 주의!) 인덱스는 항상 같으므로 indexOf()와 리턴값은 같음.
9. replace("치환대상","변경할 문자") - [치환대상문자]의 자리를 [변경할문자]로 대체한다.
10. toUpper(), toLower()
11. trim() - 문자열 앞/뒤의 공백을 제거한다. 사이의 공백은 제거하지 않는다.
12. split( "구분자" ) - "구분자"를 기준으로 문자열을 분리하고 배열에 저장한다
- 주의!) 마침표가 구분자인 경우에는 "\\." 형식으로 써야한다.
13. constains("포함되어있는지 확인할 문자") - 주어진 문자열에서 [해당문자]가 있는지 검사한다.
14. String.format() - printf()처럼 문자열을 형식 지정 문자와 결합하여 문자열의 형식을 부여한다.
# String데이터 비교시 동등비교연산자(==) 와 equals()메서드의 차이
1) String클래스의 변수로 접근하는 경우
- 리터럴을 저장할 때 해당 리터럴을 상수 풀에서 검색하여 데이터가 이미 존재하 해당 주소를 리턴하고,
중복되는 문자열이 없는경우에만 새로 메모리공간을 할당하여 데이터를 저장한다.
- 때문에 메모리공간을 절약할 수 있다.
2) String클래스의 인스턴스를 생성하여 접근하는경우
- 인스턴스를 생성하여 값을 저장하는 경우에는 똑같은 String데이터임에도 불구하고 다른 메모리공간에 할당된다.
- 때문에 동등비교연산자 사용시 false결과가 나온다. ( 동등비교연산자는 주소값을 비교하므로)
- equals() 메서드를 사용하여야 true 결과가 리턴된다. (equals( ) 메서드는 실제 데이터를 비교하므로)
II. StringBuffer / StringTokenizer
# 사용처
- String타입 데이터는 원본 문자열의 수정이 불가능하다. 때문에 문자열의 수정이 빈번한 작업을 할때 String데이터를 사용할 경우 메모리 낭비가 심해진다는 단점이 발생한다.
-> StringBuffer / StringTokenizer 객체를 활용하면 문제해결!
# 개념
- String클래스와 암시롱 상관없는 클래스이다.
- 반드시 생성자를 통해서만 사용이 가능함!
- Builder Pattern이 가능하다. ( : 자기 자신의 값을 리턴받아 메서드를 연쇄적으로 처리하는 코드작성기법 )
1) StringBuffer
# StringBuffer의 메서드
1. insert( 인덱스, 삽입할 문자열 ) - 해당인덱스위치에 문자열을 삽입한다.
2. delete( 시작인덱스, 끝인덱스 ) - [시작인덱스 이상] ~ [끝인덱스 미만] 에 해당하는 문자열을 삭제한다.
3. reverse() - 해당 문자열의 순서를 뒤집음
4. append(문자열) - 맨 뒤에 해당문자열을 추가시킨다.
# String <-> StringBuffer 상호변환이 가능하다
: String인 데이터의 빈번한 조작을 용이하게 하기 위해서는
먼저 StringBuffer타입으로 변환하여 여러 작업을 처리한 후 다시 String타입으로 원상복구시키면 된다.
1. String -> StringBuffer 변경
: StringBuffer 생성자에서 String데이터를 전달하면된다.
String str = "Hello World";
StringBuffer sb = new StringBuffer(str);
2. StringBuffer -> String
: StringBuffer객체의 toString() 메서드를 사용해야한다.
주의!) 작업이 끝난 후 저장하는 String데이터의 변수명은 기존의 String데이터 변수명과 다르게 지정해야한다.
(앞에서 설명했듯, StringBuffer와는 달리 String데이터는 값의 변경이 불가능하기때문!)
Stirng str = "Hello";
StringBuffer sbr = new StringBuffer(str);
String str_re = sbr.toString();
2) StringTokenizer
# 개념
- 문자열을 분리하여 토큰을 생성하는 기능을 제공한다.
- 각 토큰은 StringTokenizer타입의 객체로 관리된다.
- StringBuffer와 마찬가지로 객체 자신의 값을 새로이 리턴한다.
# 기본문법
StringTokenizer st = new StringTokenizer( 원본문자열 , 구분자 );
-> 원본문자열만 전달하고자 할 때는 [구분자]를 공백으로 지정한다.
- 구분자가 마침표일 경우, "." 그대로 사용해도 된다. => String클래스의 split( ) 과 차이점!
- 구분자가 여러개일 경우, [구분자]자리에 다 넣으면 된다. ".,@#$%"
# StringTokenizer의 메서드
1. countTokens() - 분리된 토큰의 갯수를 int형 데이터로 리턴함.
2. hasMoreTokens() - 현재 토큰 다음으로 토큰이 존재하는지 검사함
3. nextToken() - 현재 토큰 다음의 토큰을 리턴함.
import java.util.StringTokenizer;
public class Ex01 {
public static void main(String[] args) {
String str = "자바/JSP%데이터베이스$안드로이드@자바스크립트.스프링";
StringTokenizer st = new StringTokenizer( str,"/%$@." );
System.out.println(st.countTokens()); //6
while(st.hasMoreTokens()){
System.out.print(st.nextToken()+" "); //자바 JSP 데이터베이스 안드로이드 자바스크립트 스프링
}
}}
'개발자 양성과정 필기노트 > JAVA' 카테고리의 다른 글
JFrame 이벤트처리하는 5가지 방법 (0) | 2021.11.02 |
---|---|
Date, Calendar 클래스 / Time패키지 (0) | 2021.10.10 |
Random, Arrays 클래스 (0) | 2021.10.09 |
Object클래스 내장메서드 (0) | 2021.10.09 |
Wrapper 클래스 (0) | 2021.10.09 |
댓글