본문 바로가기

Java/[패스트캠퍼스] 100% 환급 챌린지

패스트캠퍼스 환급챌린지 54일차 미션 (3월 25일) : 시그니처 백엔드 Path 초격차 패키지 Online. 강의 후기

https://fastcampus.co.kr/dev_online_besignature
수강 강의명

[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

 

Overview (Java SE 11 & JDK 11 )

This document is divided into two sections: Java SE The Java Platform, Standard Edition (Java SE) APIs define the core Java platform for general-purpose computing. These APIs are in modules whose names start with java. JDK The Java Development Kit (JDK) AP

docs.oracle.com

 

ArrayList (Java SE 11 & JDK 11 )

Resizable-array implementation of the List interface. Implements all optional list operations, and permits all elements, including null. In addition to implementing the List interface, this class provides methods to manipulate the size of the array that is

docs.oracle.com

 

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

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr