34. String클래스
- 변경 불가능한(immutable)클래스로 매 연산마다 새로운 문자열을 가진 String인스턴스가 생성되어 메모리 공간을 차지한다.
-> 변경이 잦다면 변경 가능한 StringBuffer클래스를 사용하는 것이 좋다.
-> 같은 내용의 문자열 리터럴은 한번만 저장된다.
34-1. String클래스의 생성자와 메서드
34-2. join()
: 여러 문자열 사이에 구분자를 넣어서 결합한다.
- split()과 반대의 작업을 한다.
ex.28
String animals = “dog, cat, bear”; String[] arr = animals.split(”,”); String str = String.join(”-”, arr); System.out.println(str.toString); |
dog-cat-bear |
35.문자열과 기본형 간의 변환
[1] 기본형->문자열 변환
1)int i = 100;
String str1 = i + “”;
=> 숫자에 빈 문자열””을 결합시켜준다.
2)String str2 = String.valueOf(i);
=> valueOf() 메서드를 사용
* 빈 문자열을 더하는 방법이 더 보기 편하고 간단하기 때문에 사용해도 좋다.
다만, 성능 향상이 필요한 경우에는 valueOf()를 고려하자.
[2]문자열->기본형 변환
1)int i = Integer.parseInt(”100”);
2)int i = Integer.valueOf(”100”);
=> 원래 valueOf의 반환타입은 int(기본형)가 아닌 Integer(참조형)인데 오토박싱에 의해 int로 자동 변환된다.
3)int i=Integer.parseInt(”100”, 2);
=>문자열 100을 2진법으로 바꾼다. 생략되어 있으면 기본적으로 10진법이고16진법에서는 ‘A~F’의 문자도 허용한다.
36.StringBuffer클래스
: 내부적으로 문자열 편집을 위한 버퍼(buffer)를 가지고 있어 인스턴스 생성시 지정된 문자열을 변경할 수 있다.
->StringBuffer인스턴스 생성시 크기 지정 가능
->StringBuffer(int length) {}
->크기 지정하지 않을시 기본 16개의 문자를 저장할 수 있다.
->String클래스와는 달리 equals()가 오버라이딩 되어 있지 않아서 등가비교 연산자(==)로 비교시 false가 반환된다.
->toString()은 오버라이딩 되어 있다. (문자열 반환 가능)
-> StringBuffer에 담긴 문자열을 비교하기 위해서는 toString으로 문자열을 String참조변수에 담아준 후 equals로 비교해야 한다.
37.StringBuilder
- 멀티쓰레드에 안전하도록 동기화되어 있는 StringBuffer와 달리 싱글쓰레드에 쓰는 StringBuilder클래스를 사용하는 것이 좋다.
(*동기화는 성능을 떨어트리기 때문이다.)
- StringBuffer클래스와 완전히 똑같은 기능으로 되어 있어서 타입명만 바꿔서 사용해주면 된다.
39.Math클래스
- 기본적인 수학계산에 유용한 메서드로 구성되어 있다.
- 클래스의 메서드는 모두 static이며 E=2.71xxx, PI = 3.14xxx이다.
39-1. Math클래스의 메서드
40. 래퍼(wrapper)클래스
- 기본형 변수를 어쩔 수 없이 객체 형태로 다뤄야 하는 경우에 사용한다.
- 매개변수로 객체를 요구할 때, 기본형 값이 아닌 객체로 저장해야할 때, 객체간의 비교가 필요할 때 등등..
- 래퍼클래스의 생성자는 매개변수로 문자열이나 각 자료형의 값들을 받는다.
- 래퍼클래스는 equals()가 오버라이딩 되어있어 객체값을 비교한다.
41.넘버(Number)클래스
- 추상클래스로써 내부적으로 숫자를 멤버변수로 갖는 래퍼 클래스들의 조상이다.
- Byte, Short, Integer, Long, Float, Double, Biginteger, BigDecimal 등..
- Biginteger : long으로도 다룰 수 없는 큰 범위의 정수를 다룬다.
- BigDecimal : double로도 다룰 수 없는 큰 범위의 부동 소수점수를 처리한다.
42.오토박싱/언박싱
- 기본형과 참조형간의 연산이 불가능했으나 해당 기능으로 현재는 가능하다.
*추가 클래스 공부*
[1]Pattern 클래스
:정규 표현식이 컴파일된 클래스. 정규 표현식에서 대상 문자열을 검증하거나,
활용하기 위해 사용된다.
static pattern complie(String regex) | 주어진 정규식을 갖는 패턴 생성 |
String pattern() | 컴파일된 정규 표현식을 반환 |
Matcher matcher(CharSequence input) | 패턴에 매칭할 문자열을 입력해 Metcher를 생성 |
static boolean matches(String regex, CharSequence input) | 정규식과 문자열이 일치하는지 확인 |
String[] split(CharSequence input) String[] split(CharSequence input, int limit) |
패턴이 일치하는 항목을 중심으로 input을 분할 limit-1의 횟수만큼 패턴 일치를 시켜 문자열을 자름(문자열이 limit개 생성) 만약 0이하라면 최대한 많이 적용 |
[2]Matcher 클래스
:Pattern클래스를 받아 대상 문자열과 패턴이 일치하는 부분을 찾거나 전체 일치 여부 등을 판별하기 위해 사용된다.
Pattern pattern() | matcher가 해석한 패턴을 반환 |
Matcher usePattern(Pattern newPattern) | matcher가 사용할 Pattern을 변경 |
Matcher reset(CharSequence input) | matcher가 분석할 문자열을 변경 |
int start() | 매칭하는 문자열의 시작 인덱스를 반환 |
int start(int group) | 매칭 문자열 중 group번째 문자열의 시작 인덱스를 반환0은 그룹의 전체 패턴을 의미 start(0) = start() |
int start(String name) | 매칭 문자열 중해당 name을 지정한 그룹의 시작 인덱스를 반환 |
int end() | 일치하는 문자열의 마지막 문자열 이후 인덱스를 반환 |
int end(int group) | 매칭 문자열 중 group번째 그룹의 마지막 문자열 이후(+1) 인덱스를 반환0은 그룹의 전체 패턴을 의미 end(0) = end() |
int end(String name) | 매칭 문자열 중 해당 name을 지정한 그룹의 마지막 문자열 이후(+1) 인덱스를 반환 |
String group() | 매치와 일치하는 문자열을 반환 |
String group(int group) | 매칭되는 문자열 중 group번째 그룹의 문자열 반환0은 그룹의 전체 패턴을 의미 group(0) = group() |
String group(String name) | 매칭되는 문자열 중 해당 name을 지정한 그룹의 문자열 반환 |
int groupCount() | 패턴 내에 그룹핑한 개수를 반환(패턴에 있는 괄호 개수) |
boolean matches() | 패턴에 전체 문자열이 일치한 경우 true를 반환 |
boolean find() | 패턴이 일치하는 다음 문자열을 찾는다다음 문자열이 있다면 true |
boolean find(int start) | start 인덱스 이후부터 패턴에 일치하는 문자열을 찾는다 |
String replaceAll(String replacement) | 패턴과 일치하는 모든 문자열을 지정된 replacement로 변경 |
'Study > Java' 카테고리의 다른 글
10. <컬렉션 프레임웍 - List, Set, Map> ~자바의 정석 summary ~ (2) | 2023.01.20 |
---|---|
09. <Calendar, DecialFormat, SimpleDateFormat> ~자바의 정석 summary ~ (2) | 2023.01.17 |
07. <예외처리,equals, hashCode, clone, toString> ~자바의 정석 summary ~ (0) | 2023.01.14 |
06. <제어자, 캡슐화, 다형성, 형변환, 인터페이스 > ~자바의 정석 summary ~ (0) | 2023.01.13 |
05. <오버로딩, 생성자, 상속, 포함 > ~자바의 정석 summary ~ (0) | 2023.01.12 |
댓글