
ㅎㅇ
5장에 이어서.. 6장도 읽어봅시다.
용어정리
내용정리
ArrayList
파이썬에서는 리스트를 가지고 이리저리 조작하는 것을 많이 했었는데 자바에서는 리스트나 배열을 좀 덜 썼던 것 같다. 약간 안 익숙해서그런가. 우선 선언도 좀 복잡하고.. 크기도 정해져있고
ArrayList는 좀 더 유연한 배열의 느낌으로 접근하면 되려나... 기존 자바의 배열이 메서드를 제공하지 않아서 일일이 배열의 요소마다 값 매겨주고 new로 호출해주고 했는데 좀 더 쉽게 리스트를 짤 수 있을듯하다.
선언
ArrayList<type> myList = new ArrayList<type>();
타입에 String, int 또는 객체 이름이던 들어가면 됨
type의 와일드카드는 ?
첨가
myList.add("추가할 객체");
위치 지정해서 첨가
myList.add(int idx, Object o);
선언했을 때와 다른 타입의 객체가 들어가면 오류
선언할 때 크기를 지정하지 않았기 때문에 계속 첨가를 할 수 있다.
배열에서는 인덱스를 하나씩 늘려가며 첨가해야한다. 선언할 때의 크기를 벗어나면 오류
위치지정첨가에서는 idx 자리에 o가 들어간다. 그러면 기존 요소들 (기존에 idx 자리에 있던 요소를 포함해서)은 모두 한자리씩 뒤로 밀린다.
크기
int ArraySize = myList.size();
배열에서는 myList.length를 통해 얻을 수 있다.
제거
myList.remove("제거할 요소의 인덱스 번호");
배열에서는 인덱스 번호에 해당하는 요소를 null로 처리해주면 된다.
인덱싱
int idx = myList.indexOf("찾을 요소");
설명이 없다. 배열에서는 반복문을 돌아야할 듯
인덱싱 할 게 없으면 -1을 반환한다.
존재유무
boolean isIn = myList.contains("찾을 요소");
배열은 반복문 돌아야함
비었는지유무
boolean empty = myList.isEmpty();
반복문 돌아야할듯
값 가져오기
int a = myList.get(idx);
배열에서 인덱싱과 같은 기능
확실히 배열에 비해서 유연하며, 편하다.
위치를 지정하지 않아도 되고, 선언할 때 크기를 고려하지 않아도 된다.
뒷장을 읽다가 발견했는데
ArrayList에는 원시 타입의 값을 저장할 수 없다. 일반 객체만 저장할 수 있으며, 컴파일러는 ArrayList에 원시 값을 넣을 때는 Object 객체로 둔갑(?)시키고 빼올 때는 언래핑 작업을 자동으로 처리한다.
5장에서 이어진 스타트업 침몰시키기 게임을 발전시키는 과정에서 배우고 있는데..
클래스의 구성을
클래스 선언
로직에서 필요한 객체나 클래스의 속성이 되는 변수 선언
메서드
이런 구성으로 짜면 되지 않을까 싶다.
로직에서 필요한 객체라면 타 클래스의 메서드를 불러오는 횟수가 많이 필요한 경우 저렇게 맨 위에서 한 번 불러놓고 쓰면되지 않나 싶다. GPT에게 물어본 결과 한 클래스에서 의존성을 주입할 때는 보통 인스턴스 변수들과 같이 선언을 한다고 한다.
단 DDD에서 도메인의 경우에는 도메인 간 의존성을 주입할 수는 있으나 외부기능의 주입은 불가 (도메인에서 DB 의존성을 주입한다거나, 서비스의 의존성을 주입시킨다거나.. | 도메인은 자체적으로 작동해야하며 외부기능에 의존해서는 안됨. 필요 시 서비스에서 인자로 전달해주어야함)
여기서는 도메인이 아니라 간단한 기능만을 담은 클래스니까 큰 상관은 없는듯하다.
"초강력 불리언 표현식"
스프링 처음 배울 때 ==, != 쓰니까 뭔가 멋이 안났는데 더욱 멋진게 있었다.
그리고 - && | 또는 - || | 같지않음 - !"요소".equals("비교할 요소")
이게 끝이다. 뭐야
자바API
어떤 기능을 사용하기 위하여 패키지를 import 해서 사용하는데 ( 가령 ArrayList의 경우에는 java.util 패키지를 호출한다던가.. ) 이런 패키지들의 기능들에 대해서 정리해놓은 문서가 자바8 버전 이전으로는 자바API라는 온라인 문서에 저장되어 있었다.
근데 나는 자바17 버전을 사용하고 있기때문에..
API는 라이브러리의 줄임말이라고 한다. Restful API할 때 또 다룰 예정이니 패스
https://docs.oracle.com/en/java/javase/17/docs/api/index.html
Overview (Java SE 17 & JDK 17)
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
이 사이트에 접속하면 각종 패키지나 클래스에 대한 정보를 확인할 수 있고, HTML API문서 등도 열람할 수 있다.
기타
int, double, boolean, char 등은 객체가 아니다. 값 자체를 저장한다.
Integer, List, Object 등은 객체다. 참조값을 저장한다.
어쩐지 int와 Integer를 왜 구분짓나했더니..
소감
5장에서 크게 달라진 내용은 없고 5장에 ArrayList와 import 방식에 대해서 설명한 내용이 주가 되었다. 5장을 잘 이해했으면 가볍게 읽기 좋은 내용들이었다. 가볍게 읽고 이제 무겁게 스프링인액션을 읽어볼까요?
'언어공부 > Java | Kotlin' 카테고리의 다른 글
| [2025백엔드] 헤드퍼스트자바 독서 #6 - 10장. 숫자는 정말 중요합니다 (5) | 2025.08.03 |
|---|---|
| [2025백엔드] 헤드퍼스트자바 독서 #5 - 9장. 객체의 삶과 죽음 (3) | 2025.07.27 |
| [2025백엔드] 헤드퍼스트자바 독서 #4 - 8장. 심각한 다형성 (2) | 2025.07.26 |
| [2025백엔드] 헤드퍼스트자바 독서 #3. - 7장. 객체 마을에서의 더 나은 삶 (1) | 2025.07.26 |
| [2025 백엔드] 헤드퍼스트자바 독서 #1 - 5장. 메서드를 더 강력하게 (2) | 2025.07.23 |