본문 바로가기
Java/Java

[자바의 정석_기초편] Chapter09. java.lang package / Useful class_2

by HJ0216 2023. 5. 17.

이 글은 남궁성의 정석코딩 [자바의정석-기초편] 수강하며 정리한 글입니다.

 

 

🟣 기본 환경: IDE: Eclipse, Language: Java

 

 

 

String: 생성 후 불변

StringBuffer: 생성 후 변경 가능

 

StringBuffer sb = new StringBuffer(”abc”);

‘a’ ’b’ ’c’ 문자형 배열을 내부적으로 갖음

 

sb.append(”123”)

sb 내용 뒤 새로운 객체 생성없이 “123” 추가 가능

 

배열도 String과 마찬가지로 한 번 만들어지면 길이를 변경할 수 없음

그러므로 공간이 부족할 경우 새로운 배열을 생성해야 함

* 새로운 배열 생성 -> 기존 배열 내용 복사 ->참조 변경

 

append()

: 지정된 내용을 StringBuffer에 추가 후, StringBuffer의 참조를 반환

cf. delete 삭제, insert 삽입

 

StringBuffer sb2 = sb.append(”_okay”); // sb2 내용 뒤에 okay 추가

System.out.println(sb); // "abc123"

System.out.println(sb2); // "abc123_okay"

*sb instance address = sb instance address

 

StringBuffer: String과 달리 equals()가 오버라이딩 되어있지 않아 주소를 비교

→ String으로 변환 후 equals로 비교

 

StringBuffer Example

 

StringBuffer.capacity()

 

cf. 상수와 리터럴

int year = 2021;

fianl int MAX_VALUE = 100;

year: 변수, MAX_VALUE: 상수, 2021,100: 리터럴

상수: 값을 한 번 저장하면 변경할 수 없는 저장공간으로 정의하였기에 이와 구분하기 위해 리터럴이라는 이름을 사용

 

StringBuffer.append()

 

cf. Integer type

long type: ____L

16진수: 0x____

8진수: 0___

 

cf. StringBuilder/StringBuffer

StringBuilder - 동기화X

StringBuffer - 동기화o, 데이터 보호를 통한 멀티 쓰레드에 안전

동기화는 멀티 쓰레드 프로그램이 아닌 경우, 동기화는 불필요한 성능 저하

 

Match class: 수학관련 static method 집합

 

Wrapper class: 8개의 기본형을 객체로 다뤄야할 때 사용하는 클래스

 

- 기본형→Wrapper Class

- boolean→Boolean

- char→Chracter

- byte→Byte

- short→Short

- int→Integer

- long→Long

- float→Float

- double→Double

 

Number class: 모든 숫자 래퍼 클래스의 조상(추상 클래스)

 

Integer(10^19)→BigInteger(아주 큰 정수)

Double(10^308)→BigDecimal(아주 큰 실수)

 

Wrapper→기본형 전환 method 보유

 

* Object 클래스의 equals 메소드는 기본적으로 == 연산자를 사용하여 두 객체의 주소값을 비교

다만, 우리가 알고 있는 String 클래스에서 equals 메소드는 용도에 맞게 재정의(오버라이딩) 되어 있음

때문에 String 클래스에서의 equals는 두 객체의 주소값을 비교하는게 아니라, 두 객체의 내용이 같은지 비교할 수 있음

 

문자열→숫자

int i = new Integer("100").intValue();

* 경고: 생성자 Integer(int)는 버전 9 이후 더이상 사용되지 않음

int i2 = Integer.parseInt("100");

 

문자열→Wrapper class

Integer i3 = Integer.valueOf("100");

Byte b = new Byte("100");

Byte b = Byte.valueOf("100")

 

n진법의 문자열을 숫자로 변환하는 방법

int i4 = Integer.parseInt("100", 2) = 4

 

기본형과 참조형간의 자동 형변환

int→Integer: AutoBoxing

Integer→int: UnBoxing

 

 

 

소스 코드

🔗 HJ0216/java-practice