[1] ArrayList 클래스를 사용하는 방법
[2] 문자열 생성 방법
[1] ArrayList 클래스를 사용하는 방법
ArrayList(java.util)
자바에서 제공하는 배열처럼 동작하는 API(Object의 한계점 보완)
내부적으로 Object[]을 갖기 때문에 어떤 데이터를 배열처럼 핸들링하기에 유용하다.
*List : 부모 클래스(인터페이스)
API Document
API는 패키지별로 관리된다.
Oracle에서는 자바에서 제공하는 API에 대한 설명(사용 방법)을 웹 사이트로 제공한다.
# Specification : 설명서라는 의미
https://docs.oracle.com/en/java/javase/11/docs/api/index.html
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/ArrayList.html
Generics
ArrayList를 좀 더 안정적으로 사용하기 위해 등장된 문법
<>안에 특정 타입을 적음으로써 해당 타입만 넣을 수 있도록 제한을 가한다.
제네릭을 사용하면 내부적으로 갖는 배열이 특정 타입으로 만들어진다. Object[] → 타입[](동적)
데이터를 특정 타입으로 넣고, 특정 타입으로 꺼내기 때문에 업캐스팅, 다운캐스팅을 할 필요 없다(편리)
특정 타입에 맞춰 사용하기 때문에 다른 타입을 넣을 수 없다.
ArrayList 클래스의 특징
# IntArray, BookArray : 특정 타입만 핸들링 가능
# ObjectArray : 기능에 대한 제약 존재(업캐스팅, 다운캐스팅 필수)
(1) 배열을 기본값 or 원하는 용량의 크기로 생성 가능
# 생성자에 저장 용량을 지정할 수 있어야 범용성을 띄는 API가 된다.
# this() : 생성자안에서 다른 생성자를 호출하는 방법. 다른 생성자로 제어권이 넘어감(초기화를 한꺼번에 하기 위함)
(2) 배열의 용량이 가득차면 자동으로 늘림
# 배열의 단점 : 고정적인 길이로 인해 배열을 늘리는 작업을 별도로 해야 함(크기에 제약)
# API : 배열의 길이에 상관없이 데이터를 넣을 수 있음
(3) 동적 바인딩 : 부모의 메서드를 자식이 재정의하면 재정의된 자식의 메서드가 호출된다.
Object toString() → Book toString() // 재정의된 자식 메서드 호출
# JVM에서 자동으로 Book의 toString()를 호출한다.
[2] 문자열 생성 방법
String
문자열을 다루는 클래스
자바에서 미리 만들어 제공하는 자료형(사용자 정의 자료형)
# String toString() : 자신이 갖는 문자열을 반환하는 용도로 재정의한다.
# 사용자 정의 자료형에서 만들 수 있는 Model의 유형 : VO, DAO, Utility(API로 만들어 사용)
문자열을 메모리에 생성하는 방법
문자열은 객체로 취급하기 때문에 객체를 new 연산자를 이용하여 생성하거나 Literal Pool에 생성하여 사용해야 함
(1) new 연산자를 이용하여 Heap Memory에 만드는 방법
자바에서 문자열은 객체로 취급하기 때문에 String 타입으로 객체를 생성하여 처리해야 한다.
변수에 문자열을 저장하려면? 자료형(String 타입)이 필요하다.
문자열은 String 클래스로 저장하는 게 정석적인 방법이다.
(1) String 클래스를 사용하려면 객체를 생성해야 함
# 기본 자료형은 변수에 바로 저장 가능하지만, 객체는 변수에 바로 넣을 수 없음
# 변수에 문자열을 넣으려면 객체를 생성해야 함
(2) 생성자 ()안에 생성하려는 문자를 넣음
# 생성자에 의해 문자열이 메모리 어딘가에 만들어진다.
# String 클래스가 갖는 메서드도 메모리에 할당된다.
# 변수는 Stack Memory에 객체는 Heap Memory에 만들어진다.
(3) 문자열은 객체이므로 변수는 번지로 객체(문자열)를 가리킴
String str1 = new String("HelloWorld"); String str2 = new String("HelloWorld");
(2) 문자열 리터럴을 이용하여 Literal Pool Memory에 만드는 방법
자바에서 문자열은 객체로 취급하기 때문에 객체로 만들어 가리켜야 함
자바에서는 ""로 된 리터럴을 객체로 취급하기 때문에 객체를 생성함
변수에 리터럴을 넣으면 Literal Pool Memory에 객체가 만들어진다.
# 리터럴 : 문자열 상수
# Literal Pool Memory : 문자열 상수가 만들어지는 메모리
# Literal Pool : 재활용 메모리 공간
(1) String 타입으로 생성하려는 문자를 리터럴로 작성
# Literal Pool에 String 객체가 생성된다.
(2) 변수에 String 객체의 번지를 넣음
# 객체를 가리키는 방식은 new 연산자를 사용한 방법과 동일
# 문자열이 같을 때는 같은 객체를 가리키는게 특징
# 이미 Literal Pool에 만들어진 문자열은 새로 만들지 않고 만들어진 객체를 가리킴
int a = 10; String str1 = "HelloWorld"; String str2 = "HelloWorld"; // str1, str2는 동일한 메모리를 가리킴
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
https://bit.ly/48sS29N