공부일기
-
Java 항해일지 - 14. 제네릭공부일기/자바 스터디 2021. 3. 1. 18:52
목표 자바의 제네릭에 대해 학습하세요. 학습할 것 (필수) 제네릭 사용법 제네릭 주요 개념 (바운디드 타입, 와일드 카드) 제네릭 메소드 만들기 Erasure 제네릭이란? 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법. 제네릭은 중복 코드의 제거를 위해 자바 5부터 나왔다. 객체의 타입을 컴파일 시에 체크해 객체의 타입 안정성을 높이고 형변환의 번거로움이 줄어든다. 예를 들어 ArrayList의 경우 다양한 종류의 객체를 담을 수 있긴 하지만 보통 한 종류의 객체를 담는 경우가 많다. 저장할 객체의 타입을 지정해줌으로써 지정한 타입 외에 다른 타입의 객체가 저장되면 에러를 발생시킨다. ArrayList tvList = new ArrayList(); tvList.add(new Tv()); t..
-
Java 항해일지 - 13. I/O공부일기/Java 8 2021. 2. 28. 12:55
목표 자바의 Input과 Ontput에 대해 학습하세요. 학습할 것 (필수) 스트림 (Stream) / 버퍼 (Buffer) / 채널 (Channel) 기반의 I/O InputStream과 OutputStream Byte와 Character 스트림 표준 스트림 (System.in, System.out, System.err) 파일 읽고 쓰기 I/O 입출력 입출력이란? 입출력(I/O)란 Input과 Output의 약자로 입력과 출력, 간단히 입출력이라 한다. 입출력은 컴퓨터 내부 또는 외부 장치와 프로그램간의 데이터를 주고 받는 것을 말한다. 키보드로부터 데이터를 입력받거나, System.out.println()을 이용해 모니터 화면에 출력하던가. 스트림 (Stream) / 버퍼 (Buffer) / 채널 (..
-
테스트 주도 개발 / 켄트 백공부일기 2021. 2. 14. 21:12
블로깅의 배경 지금 소개할 책은 이번 주까지 진행되는 우테코 레벨 1 단계의 첫 번째 미션인 자동차 경주 미션을 진행하며 알게 된 TDD(Test-Driven Development)에 관한 책이다. 이번 미션을 진행하며 처음 테스트 코드를 짜 봤고, 이번 미션의 학습목표인 TDD에 대해 더 알고자 책을 읽어보게 됐다. 원래는 블로그에 글을 쓰지 않고, 연휴 기간 동안에 읽어야 지하는 생각을 갖고 있었으나 '아 내가 이거 연휴 동안 읽으려나...' 하는 내 의지력을 스스로 의심하게 됐다. 그러다 로키와 이야기하며 로키가 진행 중인 to-do list 캠페인(?)에 참여해 읽을 수밖에 없는 환경에 나를 두기로 했다. 이 책은 총 3부의 큰 줄기로 구성돼 있다. 1부에서는 서로 다른 두 가지 화폐를 이용할 수..
-
Java 항해일지 - 12. 애노테이션공부일기/자바 스터디 2021. 2. 2. 23:43
목표 자바의 애노테이션에 대해 학습하세요. 학습할 것 (필수) 애노테이션 정의하는 방법 @retention @target @documented 애노테이션 프로세서 애너테이션이란? 애너테이션은 프로그램의 소스코드 안에 다른 프로그램을 위한 정보를 미리 약속된 형식으로 포함시킨 것이다. 주석처럼 프로그래밍 언어에 영향을 미치지 않으면서 다른 프로그램에게 유용한 정보를 제공할 수 있다는 장점을 지녔다. 예를 들어 작성한 소스코드 중에 특정 메서드만 테스트하기를 원할 경우, 아래와 같이 '@Test'라는 애너테이션을 메서드 앞에 붙인다. '@Test'는 '이 메서드를 테스트해야 한다'는 것을 테스트 프로그램에게 알리는 역할만 하고, 메서드가 포함된 프로그램 자체에는 아무런 영향을 미치지 않는다. 위에서 설명했듯..
-
Java 항해일지 11. Enum공부일기/자바 스터디 2021. 1. 26. 15:42
목표 자바의 열거형에 대해 학습하세요. 학습할 것 (필수) enum 정의하는 방법 enum이 제공하는 메소드 (values()와 valueOf()) java.lang.Enum EnumSet enum이란? enum은 열거형(enumerated type)이라고 부른다. 열거형은 서로 연관된 상수들의 집합이라고 할 수 있다. 열거형은 연관된 값들을 저장하며, 저장된 값들이 변경되지 않도록 보장한다. 또한 enum의 경우 열거형 그 자체이면서 클래스이기 때문에 enum내부에 생성자나 필드, 메서드를 가질 수 있어 다양한 역할을 할 수 있다. 상수 목록이 필요해 상수목록만 적어놓은 class를 활용한 적이 있는데, 이런 사용은 자제하고 enum을 활용할 수 있다. enum 정의하는 방법 1. 별도의 java 파일..
-
Java 항해일지 10. 멀티스레드 프로그래밍공부일기/자바 스터디 2021. 1. 24. 19:32
목표 자바의 멀티스레드 프로그래밍에 대해 학습하세요. 학습할 것 (필수) Thread 클래스와 Runnable 인터페이스 스레드의 상태 스레드의 우선순위 Main 스레드 동기화 데드락 프로세스와 스레드 프로세스의 사전적 정의는 일의 과정이나 공정이며, 위키백과를 통해 얻은 의미는 다음과 같다. 프로세스는 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 말한다. 종종 스케줄링의 대상이 되는 작업이라는 용어와 거의 같은 의미로 쓰인다. 여러 개의 프로세서를 사용하는 것을 멀티프로세싱이라고 하며 같은 시간에 여러 개의 프로그램을 띄우는 시분할 방식을 멀티태스킹이라고 한다. 그렇다면 스레드란 무엇일까. 마찬가지로 위키백과를 통해 얻은 의미는 아래와 같다. 스레드는 어떠한 프로그램 내에서, 특히 프로세스 내..
-
Java 항해일지 - 9. 예외 처리공부일기/자바 스터디 2021. 1. 17. 19:57
목표 자바의 예외 처리에 대해 학습하세요. 학습할 것 (필수) 자바에서 예외 처리 방법 (try, catch, throw, throws, finally) 자바가 제공하는 예외 계층 구조 Exception과 Error의 차이는? RuntimeException과 RE가 아닌 것의 차이는? 커스텀한 예외 만드는 방법 프로그램을 사용하다가 프로그램이 비정상적으로 종료되는 결과를 초래하는 원인을 프로그램 에러(Error) 또는 오류라고 한다. 에러는 크게 컴파일 에러와 런타임 에러로 구분할 수 있다. 컴파일 에러는 기본적으로 자바 컴파일러가 문법 검사를 통해서 오류를 잡아내 준다. 우리는 컴파일러가 알려주는 오류를 수정하면 성공적으로 컴파일을 해서 프로그램을 실행할 수 있다. 그러나 컴파일이 문제없이 되더라도 실..
-
Java 항해일지 - 8. 인터페이스공부일기/자바 스터디 2021. 1. 8. 19:01
목표 자바의 인터페이스에 대해 학습하세요. 학습할 것 (필수) 인터페이스 정의하는 방법 인터페이스 구현하는 방법 인터페이스 레퍼런스를 통해 구현체를 사용하는 방법 인터페이스 상속 인터페이스의 기본 메소드 (Default Method), 자바 8 인터페이스의 static 메소드, 자바 8 인터페이스의 private 메소드, 자바 9 인터페이스란? 인터페이스는 일종의 추상 클래스이다. 추상클래스처럼 추상메서드를 갖지만 추상 클래스보다 추상화 정도가 높아 오직 추상메서드와 상수만을 멤버로 가질 수 있으며, 그 외의 다른 어떠한 요소도 허용하지 않는다. 추상클래스를 '미완성 설계도'에 비유한다면, 인터페이스는 밑그림만 그려진 '기본 설계도'에 비유할 수 있다. 추상클래스와 마찬가지로 불완전하기 때문에 그 자체로..