문자열, StringBuffer, 싱글톤 패턴, wrapper, data 저장 방법
*문자열
String 클래스: 철사에 비유할 수 있음. 한 번 생성된 문자열은 변경불가, 다양한 메서드 적용시 새로운 문자열이 반환되는것 ==> 메모리 효율에 비적합함. 선언시 리터럴(*) 및 new 이용 + 메서드
StringBuffer 클래스
***StringBuilder클래스***
==> 스트링 버퍼 및 스트링 빌더 클래스는 고무줄에 비유할 수 있음. 생성된 문자열이 변경 시 자기 자신을 변경됨.
==> 메모리 관리에 효율적임.
==> new 이용(*) + 메서드
**싱글톤 패턴(Singleton's pattern)
=> 인스턴스를 하나만 하도록 강제하는 패턴, 메모리를 절약할 수 있는 장점이 있지만, 개방되어 객체지향 프로그래밍에서는 지양할땐 쓰지 않도록 한다. ex) static
*wrapper 클래스
1) 기본형 데이터에 해당하는 8개의 클래스를 의미.
기본형 = byte, short, int ,long, float, double, char, boolean
2) wrapper 클래스(참조형)
Byte, Short, Integer, Long, Float, Double, Character, Boolean
-> 구성요소 - 변수/상수, 메서드, 생성자
ex) Integet.parseInt(); 문자열->정수로 변환해줌.
기본형과 wrapper 클래스를 묶어서 생각하자(항상!)
*오토박싱, 오토언박싱
자동으로 형변환을 해준다.
기본형 타입에 참조형 데이터를 집어넣을수 없었다. 변환시켜주는 메소드를 사용했어야 하는데, 너무 불편하여 개선된게 오토박싱, 오토언박싱이다.
예전)
int n = 10;
Integer n2 = new Integer(10);
int x = n2 -->X
Integer x2 = n --> X
**자바의 Data 저장방법 3가지**
1. 변수
가. 기본형 변수 int n = 10; // 실제값 저장
나. 참조형 변수 Student s = new Student; // 주소값 저장
다. Data 갯수만큼 변수 필요 => 관리가 너무 어렵다.
라. 로컨변수, 인스턴스 변수 ,클래스 변수(static 변수)
마 .변수명은 소문자/명사형
2. 배열
가. 기본형 배열 : int[] arr = {1,2,3};
나. Student[] s= {data1,data2...};
다. 배열은 참조형이다. 배열 변수에 가면 주소값이 있다.
라. 크기 변경 불가. ==> 삭제, 추가 등등
마. 같은 타입만 저장이 가능하다.
바. 배열의 크기: 배열명.length();
사. 생성 3가지 ==> new, 리터럴, new + 리터럴
아. 접근은 인덱스로 접근한다.
3. 컬렉션(collection API)
==> Data 저장방법 중 하나
가. 다양한 자료구조를 가진다.(저장 방법)
나. 참조형만 저장 가능하다.(기본형 불가) ==> 기본형을 wrapper 형태로 저장 가능하다.
다. 크기 변경 가능 => Stringbuilder와 유사함.
라. 타입이 달라도 저장 가능
Set 계열, List 계열, Map 계열
1) Set 계열(값만 저장) -> 순서x 중복x
2) List 계열(값만 저장) -> 순서o 중복o == 배열과 비슷
3) Map 계열(키(이름),값 쌍으로 저장)
Set 계열.메소드
Iterator[E] : 반복자, set 계열의 바구니 안에 있는 요소들을 끌고 오는것.
*가변인자
문법 => ... (점 세개)
public void a(int ... n){
가변인자는 매개변수를 배열로 처리한다.
}