이 글은 남궁성의 정석코딩 [자바의정석-기초편]을 수강하며 정리한 글입니다.
🟣 기본 환경: 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
소스 코드
'Java > Java' 카테고리의 다른 글
[자바의 정석_기초편] Chapter11. 컬렉션 프레임워크 (Collections framework)_1 (1) | 2023.05.25 |
---|---|
[자바의 정석_기초편] Chapter10. 날짜와 시간 & 형식화 (0) | 2023.05.20 |
[자바의 정석_기초편] Chapter09. java.lang package / Useful class_1 (0) | 2023.05.14 |
[자바의 정석_기초편] Chapter08. 예외처리(Exception) (0) | 2023.05.13 |
[자바의 정석_기초편] Chapter07. 객체지향(Object Oriented)_5 (0) | 2023.05.11 |