2022 / 9 / 21 수
- String 클래스
- StringTokenizer 클래스
- StringBuffer , Builder 클래스
- 정규표현식 , Pattern클래스
- Arrays 클래스
- Wrapper클래스
✔ String클래스
String 생성자
- byte[ ] 배열을 문자열로 변환하기 위해 사용
String 메소드
- 문자열의 추출, 비교, 찾기, 분리, 변환 등과 같은 다양한 메소드를 가진다.
리턴 타입 | 메소드명 | 의미 |
char | charAt (int index) | 특정 위치 문자 리턴 |
boolean | equals(Object anObject) | 두 문자열 비교 |
byte [ ] | getBytes( ) | byte [ ] 로 리턴 |
getBytes(Charset charset) | 주어진 문자셋으로 인코딩한 byte [ ] 로 리턴 |
|
int | indexOd(String str) | 문자열 내 주어진 문자열의 위치를 리턴 |
length( ) | 총 문자 수를 리턴 | |
String | replace(CharSequence target, CharSequence repalcement) |
target부분을 replacement로 대치한 새로운 문자열 리턴 |
substring(int beginindex) | beginindex 위치에서 끝까지 잘라낸 새로운 문자열 리턴 | |
substring(int beginlndex, int endindex) | beginindex 위치에서 endindex전까지 잘라낸 새로운 문자열 리턴 | |
toLowerCase( ) | 알파벳 소문자로 변환한 새로운 문자열 리턴 | |
toUpperCase( ) | 알파벳 대문자로 변환한 새로운 문자열 리턴 | |
trim( ) | 앞 뒤 공백을 제거한 새로운 문자열을 리턴 | |
valueOf(int i) valueOf(double d) |
기본 타입값을 문자열로 리턴 |
1. 문자 추출( charAt ( ) )
매개 값으로 주어진 인덱스의 문자를 리턴한다. ( 공백도 문자에 포함 )
String subject = " 자바 공부 ";
char charValue = subject.charAt(3);
👇
자 바 공 부
0 1 2 3 4
charAt(3)의 결과 값은 '공' 이 된다 !
2. 문자열 비교 ( equals( ) )
== 연산자를 사용하여 비교한다.
3. 바이트 배열로 변환 ( getBytes( ) )
네트워크로 문자열을 전송하거나 문자열을 암호화할 때 주로 사용한다.
UTF-8에서 알파벳은 1바이트, 한글은 3바이트로 변환한다.
4. 문자열 찾기( IndexOf( ) )
매개값으로 주어진 문자열이 시작되는 인덱스를 리턴한다.
주어진 문자열이 포함되어있지 않으면 -1을 리턴 !
String subject = "자바 프로그래밍";
int index = subject.indexOf(" 프로그래밍 ");
프로그래밍 문자열이 위치해있는 index값인 3이 결과값으로 나온다.
5. 문자열 길이 ( length( ) )
문자열의 길이를 리턴한다
String subject = "자바 프로그래밍";
int length =subject.length( );
length() 에는 8이 저장된다.
6. 문자열 대치 ( replace( ) )
1. 첫번쨰 매개값인 문자열을 찾는다
2 .두번째 매개값인 문자열로 대치한다
3. 새로운 문자열을 리턴한다.
7. 문자열 잘라내기(substring ( ) )
substring(int beginlndex, int endindex)
주어진 시작과 끝 인텍스 사이의 문자열을 추출한다.
substring(int beginlndex)
주어진 인덱스 이후부터 끝까지의 문자열을 추출한다.
8. 알파벳 소대문자 변경하기 ( toLowerCase( ), toUpperCase( ) )
toLowerCase( )
문자열을 모두 소문자로 바꾼다.
toUpperCase( )
문자열을 모두 대문자로 바꾼다.
9. 문자열의 앞뒤 공백 잘라내기 ( trim ( ) )
문자열의 앞뒤 공백을 제거한 새로운 문자열을 생성하고 리턴한다.
10. 문자열 변환( valueOf( ) )
기본 타입의 값을 문자열로 변환해준다.
✔ StringTokenizer 클래스
문자열이 특정 구분자로 연결되어 있는 경우,
구분자를 기준으로 부분 문자열을 분리하기 위해
1. split() 메소드 사용
2. java.util.StringTokenizer 클래스 사용을 한다.
split( ) 메소드
정규 표현식을 구분자로 해서 부분 문자열을 분리하고, 배열에 저장하고 리턴 한다.
StringTokenizer 클래스
1 . 첫번쨰 매개값으로 전체 문자열을 주고
2 . 두번째 매개값으로 구분자를 준다.
✔ StringBuffer , Builder 클래스
문자열을 저장하는 string은 내부의 문자열을 수정할 수 없음!
문자열을 변경하는 작업이 많은 경우 string클래스를 사용하는 것보다
StringBuffer, StringBuilder 클래스를 사용하자 ~
StringBuffer, StringBuilder 클래스 특징
내부 버퍼(버퍼 :데이터를 임시로 저장하는 메모리)에 문자열을 저장하여 추가, 수정, 삭제 작업이 가능하다. | |
StringBuffer | StringBuilder |
멀티 스레드 환경에서 사용 가능 | 단일 스레드 환경에서 사용 가능 |
// String클래스는 새로운 문자열이 생성 될 때마다 새로운 기억장소를 생성하여 메모리 및 성능 문제를 야기 할 수 있다.
// StringBuilder, StrungBuffer 클래스를 사용하면 객체 생성시 힙영역의 기억장소를 재사용한다.
StringBuilder sb = new StringBuilder();
sb.append("java ");
sb.append("progeam study");
System.out.println(sb.toString()); // 문자열을 끝에 추가
sb.insert(4, "2");
System.out.println(sb.toString()); // index4번위치 뒤에 2를 넣어라 => java2 progeam study
✔ 정규표현식 , Pattern클래스
정규표현식이란?
문자열에서 특정 문자 조합을 찾기 위한 패턴
ex ) 이메일, 전화번호, 비밀번호, 아이디 체크 등
Pattern클래스
API 도큐먼트에서 Pattern클래스를 찾아서 참고하자 !
https://docs.oracle.com/javase/8/docs/api/
Java Platform SE 8
docs.oracle.com
이스케이프 표현 참고하기
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String
String - JavaScript | MDN
String 전역 객체는 문자열(문자의 나열)의 생성자입니다.
developer.mozilla.org
✔Arrays 클래스
Arrays
배열 조작 기능을 갖는다.
배열 조작 : 배열 복사, 항목 정렬, 항목 검색
1. 배열 복사
Arrays.copyOf (원본 배열, 복사할 길이)
index 0 부터 복사하고자 하는 길이의 -1 까지 항목을 복사한다.
copyOfRange(원본 배열, 시작 인덱스, 끝 인덱스)
시작 인덱스부터 끝 인덱스의 -1 까지 항목을 복사한다.
System.arraycopy( 원본 배열, 원본 시작 인덱스, 타켓배열, 타켓 시작 인덱스, 복사 개수)
2. 배열 항목 비교
Arrays.equals(배열, 배열)
1차 항목의 값만 비교
Arrays.deepEquals(배열, 배열)
중첩된 배열의 항목까지 비교
int[][] original = { {1,2},{3,4} };
// 얕은 복사 후 비교
System.out.println("얕은 복제 후 비교");
int[][] cloned1 = Arrays.copyOf(original, original.length); // 새로운 배열 기억장소
System.out.println("배열 주소 비교 : " + original.equals(cloned1)); //false
System.out.println("1차 배열 항목값 비교 : " + Arrays.equals(original, cloned1)); //true
System.out.println("중첩 배열 항목값 비교 : " + Arrays.deepEquals(original, cloned1)); //true
//깊은 복사 후 비교
System.out.println("깊은 복제 후 비교");
int[][] cloned2 = Arrays.copyOf(original, original.length); // 새로운 배열 기억장소
cloned2[0] = Arrays.copyOf(original[0], original[0].length);
cloned2[1] = Arrays.copyOf(original[1], original[1].length);
System.out.println("배열 주소 비교 : " + original.equals(cloned2)); //false
System.out.println("1차 배열 항목값 비교 : " + Arrays.equals(original, cloned2)); //false
System.out.println("중첩 배열 항목값 비교 : " + Arrays.deepEquals(original, cloned2)); //true
3. 배열 항목 정렬
Arrays.sort( ) 메소드의 매개값으로 지정하면 자동으로 오름차순으로 정렬이 된다 !
4. 배열 항목 검색
1. Arrays.sort( ) 메소드로 오름차순으로 정렬
2. Arrays.binarySearch( )메소드로 항목을 찾는다.
// 기본 데이터 타입 값 검색
int[] scores = { 99, 97, 98 };
Arrays.sort(scores); // 오름차순 정렬
System.out.println(Arrays.toString(scores));
int index = Arrays.binarySearch(scores, 99);
System.out.println("찾은 인덱스: " + index);
// 문자열 검색
String[] names = { "허니버터칩", "나쵸", "초코송이" };
Arrays.sort(names);
System.out.println(Arrays.toString(names));
index = Arrays.binarySearch(names, "허니버터칩");
System.out.println("찾은 인덱스: " + index);
✔ Wrapper클래스
Wrapper 포장 객체란?
기본 타입 (byte, char, short, int, long, float, double, boolean) 값을 내부에서 두고 포장하는 객체이다.
기본 타입의 값은 외부에서 변경이 불가하다 !
기본타입 | 포장 클래스 |
byte | Byte |
char | Character |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
박싱 & 언박싱
Boxing : 기본 타입의 값을 포장 객체로 만드는 과정
Unboxing : 포장 객체에서 기본 타입의 값을 얻어내는 과정
'🏃♀️ Do it ! > TIL' 카테고리의 다른 글
프로세스 / 스레드 / 동기화 메소드, 동기화 블록 (0) | 2022.09.23 |
---|---|
Date , Calendar 클래스/ Format 클래스 / java.time 패키지 (1) | 2022.09.22 |
예외 처리 / 자바 API / Object 클래스 / class 클래스 / tomcat설치 (0) | 2022.09.20 |
다중 인터페이스 / 디폴트 메서드 / 중첩 클래스 / 익명객체 / 예외 처리 (0) | 2022.09.19 |
인터페이스 / 개념체크 (0) | 2022.09.16 |