Java

문자열, StringBuffer, 싱글톤 패턴, wrapper, data 저장 방법

무르뇌 2022. 7. 18. 15:36

*문자열

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){

가변인자는 매개변수를 배열로 처리한다.

}