JAVA(9)
-
[Java] Record Class란?
레코드란? 불변(immutable) 객체를 쉽게 생성할 수 있도록 하는 유형의 클래스입니다. JDK14에서 preview로 등장하여 JDK16에서 정식 스펙으로 포함되었습니다. 저는 JDK 17 LTS 버전으로 프로젝트를 진행하며 레코드 클래스의 장점을 맛봤습니다. Before 학생(Student) 클래스에 이름과 나이 필드가 있다고 가정하겠습니다. Record를 사용하기 전에, Student를 불변 객체를 생성하기 위해서는 다음과 같이 코드를 작성해야 합니다. public class Student { private String name; private int age; public Student(String name, int age) { this.name = name; this.age = age; } p..
2023.06.12 -
스트림(Stream) 소개
본 포스팅에서는 [모던 자바 인 액션] Chapter 4를 읽고 정리하였다. 따라서 포스팅에 사용한 자료들은 저자와 출판사에 귀속된다. 개요 4.1 스트림이란? 4.2 스트림 시작하기 4.3 스트림과 컬렉션 4.4 스트림 연산 1. 스트림이란? 오늘날 자바 어플리케이션에서 컬렉션은 필수라고 할 수 있다. 스트림은 자바 8 API에 새로 추가된 기능으로, 컬렉션 데이터를 멋지게 처리하는 기능이다. 뜬금없지만 저칼로리의 요리명을 반환하고, 칼로리를 기준으로 요리를 정렬하는 코드를 살펴볼 것이다. 자바 7의 코드와 스트림을 이용한 자바 8의 코드를 비교해보자. 먼저 요리(Dish) 클래스는 다음과 같이 불변형 클래스다. Dish.class package com.study.ch4stream; public cla..
2022.12.25 -
JIT compiler
CS 스터디를 준비하는데 컴파일 언어의 컴파일 과정이 있어서, 인터프리터 언어와 컴파일 언어에 대해 찾아보았다. 문득 자바는 컴파일 언어 아닌가? 싶어서 검색해보았고.. JIT compiler와 JVM의 구조까지 한번 학습하는 시간을 갖게 된 것이다.. 이번 포스팅에서는 1) 인터프리터 언어와 컴파일 언어의 차이 2) 자바는 어떤 언어일까 3) JIT compiler와 JVM의 구조 를 간략하게 적어보겠다. 1) 인터프리터 언어 vs 컴파일 언어 개발자가 작성한 소스코드를 고급언어라고 한다. 둘의 큰 차이점은 고급언어를 컴파일하는지 여부다. 인터프리터 언어 인터프리터 언어는 우리가 작성한 소스코드를 컴파일 하지 않고 한 줄씩 읽으면서 실행한다. 컴파일 과정이 없으니 여기서 시간을 세이브 할 수 있겠지만 ..
2022.12.11 -
Java - Calculator 과제 회고
스스로 Java를 이용해 객체지향적으로 Calculator를 설계하는 과제를 마쳤다. 과제를 진행하는 동안 겪은 어려움과 학습한 내용들을 간단하게 정리하고자 한다. 지금까지 독학을 하면서 다른 사람에게 내 코드를 보여준 것은 이번이 처음이다. 상당히 유익한 시간이었고 내가 갖고 있던 안좋은 습관들을 발견할 수 있었다. 고치는 것은 앞으로 나의 몫이다! 안좋은 습관들 변수명을 축약형으로 사용하는 것 sc -> scanner, comm -> command 등 풀 네이밍하는 습관을 갖자 주석을 사용하는 것 '주석을 달아야 하는 코드는 잘못된 코드다’ 라는 말을 어디선가 들은 것 같다. 클래스와 메서드 명을 명확하게 하고, 테스트 코드가 문서처럼 작성되는 것이 베스트다. 메소드 네이밍을 잘하자 checkUser..
2022.10.30 -
Java 숫자야구
수업을 따라 숫자 야구를 구현하며 객체지향적으로 코드를 작성하는 시간을 가졌다. 설계도와 로직 위 그림은 https://excalidraw.com/에서 그렸다. 강사님이 사용하시길래 들어가서 사용해봤는데 사용법이 간단해서 꽤 좋았다. 객체지향적으로 설계를 위해서는, 역할과 책임의 분리가 중요하다. 이번 실습에서는 역할(관심사)에 따라 클래스로 분리했다. 또, 변경의 여지가 있는 부분은 전부 인터페이스로 설계했다. 역할에 따라 분리한 클래스 1. Baseball Class: 핵심 비즈니스 로직을 수행 2. Input: 사용자의 입력 처리 3. Output: 결과 반환 4. Numbers: 숫자 저장 5. NumberGenerator: 랜덤한 숫자 생성 6. BallCount: 스트라이크, 볼의 개수 관리 ..
2022.10.21 -
Collection과 Iterator
컬렉션이란 여러 데이터의 묶음을 말한다. 기본적으로 Collection은 추상체이며, 구현체의 종류로는 List, Set, Map 등이 있겠다. List, Set, Map의 구현체로는 LinkedList, HashSet, HashMap, Vector, Stack 등 자주 사용하는 자료구조가 이에 해당한다. 이번 포스팅에서는 MyCollection이라는 나만의 Collection 클래스를 정의하면서 Java의 컬렉션에 대해 알아보자. MyCollection 데이터의 묶음답게, MyCollection 클래스는 지네릭스를 이용해 어떤 타입이든 사용 가능하도록 하였다. public class MyCollection { private List list; public MyCollection(List list) { ..
2022.10.20