본문 바로가기
Study/Java

08. <String클래스, 문자열-기본형 변환, 오토박싱> ~자바의 정석 summary ~

by 하구땡 2023. 1. 16.
반응형

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로 변경

 

반응형

댓글