728x90
20220921(수)
- 목차 (API 클래스)
- String 클래스
- String Tokenizer 클래스
- String Buffer, String Builder 클래스
- 정규 표현식과 Pattern 클래스
- Arrays 클래스
- 포장(Wrapper) 클래스
< String 클래스 >
- 문자열은 데이터로서 아주 많이 사용된다.
- 때문에 문자열을 생성하는 방법과 추출, 비교, 찾기, 분리 변환 등을 제공하는 메소드를 잘 익혀두어야 함
- String 생성자
바이트 배열 ➡ 문자열로 변환
파일의 내용을 읽거나, 네트워크를 통해 받은 데이터는 보통 byte[] 배열이므로 이것을 문자열로 변환하기 위해 사용 - String 메소드
문자 추출 (charAt()) | 매개 값으로 주어진 인덱스의 문자 리턴 |
문자열 비교 (equlas()) | 문자열 비교할 때 == 연산자 사용 시 원하지 않는 결과 발생 주의! |
바이트 배열로 변환 (getBytes()) | 문자열 ➡ byte[] 변환 ex) 네트워크로 문자열 전송하거나, 문자열을 암호화할 때 변환함 |
문자열 찾기 (indexOf()) | 일치되는 검색어의 첫문자 인덱스를 반환한다. 특정 문자열 포함 여부 확인가능 if(문자열.indexOf("찾는 문자열") != -1) { // 포함 } else { // 포함 X } |
문자열 길이 (length()) | 문자열의 길이(문자의수)를 리턴한다. (공백도 문자에 포함) |
문자열 대치 (replace()) | String 객체의 문자열 : 변경 불가한 특성 有 첫 번째 매개값인 문자열 찾음 ➡ 두 번째 매개값인 문자열로 대치 ➡ 새로운 문자열 리턴 |
문자열 잘라내기 (substring()) | - substring(int beginIndex, int endIndex) : 주어진 시작과 끝 인덱스 사이 문자열 추출 - substring(int beginIndex) : 주어진 인덱스 이후부터 끝까지 문자열 추출 |
알파멧 소.대문자 변경 (toLowerCase(), toUpperCase()) |
- toLowerCase() 메소드 : 문자열을 모두 소문자로 바꾼 새로운 문자열 생성 후 리턴 - toUpperCase() 메소드 : 문자열을 모두 대문자로 바꾼 새로운 문자열 생성 후 리턴 (* 최초의 기억장소는 재사용하지 않는다! 결과가 새로운 기억장소로 만들어진다.) |
문자열 앞뒤 공백 잘라내기 (trim()) | 좌우측 공백제거 (*중간 공백 제거 불가능) |
문자열 변환 (valueOf()) | 기본 타입의 값을 문자열로 변환하는 기능 |
< String Tokenizer 클래스 >
문자열이 특정 구분자(delimiter)로 연결되어 있을 경우, 구분자 기준으로 문자열 분리 시 방법 2가지
- 문자열 분리방법
String의 split() 메소드 이용 | java.util 패키지의 StringTokenizer 클래스 이용 |
정규 표현식으로 구분 | 문자로 구분 |
배열에 저장하고 리턴 if) 문자열 = text, 정규표현식 제외 한 문자 추출은? String[] names = text.split("&|,|-"); |
손쉽게 문자열 분리 가능 전체 토큰 수, 남아 있는 토큰 여부 확인 후 토큰 읽기 (* 토큰 : 분리할 수 있는 작은 단위의 데이터) StringTokenizer st = new StringTokenizer("문자열", "구분자"); |
< String Buffer, String Builder 클래스 > - 문자열 변경 작업이 많은 경우 사용
- String은 내부의 문자열 수정 불가 ➡ 대치된 새로운 문자열 리턴
- buffer : 데이터를 임시로 저장하는 메모리
StringBuffer, StringBuilder | |
버퍼(buffer:데이터를 임시로 저장하는 메모리)에 문자열 저장 버퍼 내부에서 추가, 수정, 삭제 작업 가능 (String처럼 새로운 객체를 만들지 않고도 문자열 조작 가능) |
|
String Buffer 사용 | String Builder 사용 |
멀티 스레드 환경 | 단일 스레드 환경 |
*스레드는 추후에 다시 알아보자!
<정규 표현식과 Pattern 클래스 >
- 정규 표현식 작성 방법
문자열이 정해져 있는 형식으로 구성되어 있는지 검증할 때 사용
ex) 이메일, 전화번호, 비밀번호 등
기호 | 설명 | 기호 | 설명 |
[] | 한 개의 문자 | * | 없음 또는 한 개 이상 |
\d | 한 개의 숫자, [0-9]와 동일 | + | 한 개 이상 |
\s | 공백 | {n} / {n,} | 정확히 n개 / 최소한 n개 |
\w | 한 개의 알파벳 또는 한 개의 숫자 [a-zA-Z_0-9]와 동일 |
{n,m} | n개에서부터 m개까지 |
? | 없음 또는 한개 | () | 그룹핑 |
ex1) 전화번호를 위한 정규 표현식
➡ (02|010)-\d{3,4}-\d{4}로 표현 : 02또는 010 - 3자리 또는 4자리 숫자 - 4자리 숫자
ex2) 이메일을 위한 정규 표현식
➡ \w+@\w+\.\w+(\.\w+)?로 표현
: 한 개 이상의 알파벳 또는 숫자 @ 한 개 이상의 알파벳 또는 숫자.한개이상의 알파벳 또는 숫자
(\.\w+)? : \.\w+이 없거나 한번 더 올 수 있음 ex. @dorothy.or.kr
- Pattern 클래스
정규 표현식으로 문자열을 검증하는 역할 ➡ 정적 메소드인 matches()가 검증기능 제공함
* 결과는 boolean 타입!
boolean result = Pattern.matches("정규식", "입력된 문자열");
< Arrays 클래스 >
- 배열 조작 기능을 가지고 있는 클래스 - 배열 복사, 항목 정렬, 항목 검색
- Arrays 클래스
배열 복사 | Arrays.copyOf(원본배열, 복사할 길이) 0 ~ (복사할 길이-1)까지 항목 복사 복사할 길이는 원본 배열의 길이보다 커도 되며 타겟 배열의 길이 copyOfRange(원본 배열, 시작 인덱스, 끝 인덱스) 시작인덱스 ~ (끝 인덱스-1)까지 항목 복사 *System.arraycopy(원본 배열, 원본시작인덱스, 타겟배열, 타겟시작인덱스, 복사개수) : 단순 배열을 복사할 목적이라면 Arrays 클래스 사용하지 않고 위 메소드 이용가능 |
배열 항목 비교 | Arrays.equals(배열, 배열) : 1차 항목의 값만 비교 Arrays.deepEquals(배열, 배열) : 중첩된 배열의 항목까지 비교 |
배열 항목 정렬 | Arrays.sort(배열) : 항목 오름차 순으로 정렬 기본 타입이거나 String 배열 자동 정렬 사용자 정의 클래스 배열은 Comparable 인터페이스를 구현해야만 정렬 |
배열 항목 검색 | 특정 값 위치한 인덱스 얻는 것 Arrays.sort(배열)로 먼저 정렬 Arrays.binarySearch(배열, 찾는 값) 메소드로 항목을 찾아야 |
< 포장(Wrapper) 클래스 >
- 포장(Wrapper) 객체란?
기본 타입(byte, char, short, int, long, float, double, boolean) 값을 내부에 두고 포장하는 객체
기본 타입의 값은 외부에서 변경 불가
- 박싱(Boxing)과 언박싱(Unboxing)
박싱(Boxing) | 언박싱(Unboxing) |
기본 타입의 값을 포장 객체로 만드는 과정 | 포장 객체에서 기본 타입의 값을 얻어내는 과정 |
1) 생성자 이용 ex) Integer obj = new Integer(1000);
2) valueOf()메소드 이용 Integer obj = Integer.valueOf(1000); Integer obj = Integer.valueOf("1000"); |
언박싱 코드 - 각 포장 클래스마다 가지고 있는 클래스 호출 - 기본 타입명 + Value() - ex) int num = obj.intValue(); |
- 자동 박싱과 언박싱
- 자동 박싱 : 포장 클래스 타입에 기본값이 대입될 경우 발생
- 자동 언박싱 : 기본 타입에 포장 객체가 대입될 경우 발생 - 문자열을 기본 타입 값으로 변환
parse + 기본 타입 명 ➡ 정적 메소드 - 포장값 비교
포장 객체는 내부 값을 비교하기 위해 ==와!= 연산자 사용 불가
값을 언박싱해 비교하거나, equals() 메서드로 내부 값 비교할 것
728x90
'🏫 Open API_JAVA' 카테고리의 다른 글
[44일차] 멀티 스레드 개념 / 작업 스레드 생성과 실행 / 스레드 우선순위 (0) | 2022.09.26 |
---|---|
[43일차] Math, Random 클래스 / Date, Calendar 클래스 / Format 클래스 / java.time 패키지 (0) | 2022.09.23 |
[41일차] 자동 리소스 닫기 / 사용자 정의 예외와 예외 발생 / java.lang과 java.util 패키지 / Object 클래스 / Tomcat 설치 (0) | 2022.09.21 |
[40일차] 인터페이스 상속 / 디폴트 메소드와 인터페이스 확장 / 중첩 클래스 / 익명 객체 / 예외처리 (0) | 2022.09.20 |
[39일차] 추상 클래스 / 추상 메소드 / 인터페이스 (0) | 2022.09.19 |