# 자바의 람다식에 대해 학습하세요. # 학습할 것 람다식 사용법 함수형 인터페이스 Variable Capture 메소드, 생성자 레퍼런스 람다식을 사용하기에 앞서 익명 구현 객체라는 것에 대해 알면 좋다. 익명 구현 객체는 인터페이스나 클래스의 객체를 생성해서 사용할 때, 재사용하지 않는 경우 보통 사용한다. 예를 들어 보자. 특정 인터페이스를 사용하기 위해 이 인터페이스를 상속 받은 클래스를 구현하는 방법이 있다. package me.xxxelppa.study.week15; public class Exam_001 { public static void main(String[] args) { Exam_001_Sub exam_001_sub = new Exam_001_Sub(); exam_001_sub.do..
프로그래밍 언어/Java online live study S01
# 자바의 제네릭에 대해 학습하세요. # 학습할 것 제네릭 사용법 제네릭 메소드 만들기 제네릭 주요 개념(바운디드 타입, 와일드 카드) Erasure 제네릭을 사용하는 방법에 대해 정리해보기 전에 왜 필요한지에 대해 알면 언제 사용할지 도움이 될 수 있다. 예전에 관련해서 정리했던 링크를 첨부한다. java 제네릭 (Generic), 내가 알아보기 쉽게 정리 - 1편, 왜 제네릭 링크를 추가 했지만, 그래도 간략하게 제네릭이 왜 필요한지 간단하게 정리해보려 한다. 제네릭을 사용하는 이유에는 흔히 알고있는 컴파일 타임에 타입 체크를 하기 위함이나 타입 캐스팅을 제거하여 프로그램 성능 향상을 위해서 이다. 하지만 보다 궁극적인(?) 목적은 중복코드의 제거에 있다고 생각 한다. 예를 들어 다음과 같이 List..
# 자바의 애노테이션에 대해 학습하세요. # 학습할 것 애노테이션 정의하는 방법 @retention @target @documented 애노테이션 프로세서 애노테이션(annotation)을 사전에 찾아보면 '주석'이라고 나온다. 위 이미지는 구글 검색 결과인데, 말뭉치 주석 이라는 말이 재밌어서 첨부했다. 자바에서 주석이라고 하면 크게 세 가지 형태를 떠올릴 수 있다. 1. 단일행 주석 2. 다중행 주석 3. javadoc 주석 이 주석들은 보통 작성된 코드를 보는 사람에게 정보를 제공해주기 위해 사용한다. 코드를 언제 누가 작성 했는지, 어떤 메소드가 있으며 어떻게 사용하는지 등 보통 자국어 문자를 사용해서 설명을 작성해 놓은 것이다. 적절한 위치에 작성된 과하지 않은 적절한 주석은 코드를 읽는데 도움..
# 자바의 열거형에 대해 학습하세요. # 학습할 것 enum 정의하는 방법 enum이 제공하는 메소드 (values()와 valueOf()) java.lang.Enum EnumSet Enum을 '열거형' 또는 Enumeration 또는 상수집합 이라고도 부른다. 상수 목록이 필요해서 class 나 interface 를 활용 하는것을 본 적이 있다. 하지만 class 나 interface 는 그런 용도로 사용하라고 만들어진 것이 아니기 때문에 이런 사용을 지양해야 한다. enum 정의하는 방법 가장 단순한 형태의 enum 클래스는 다음과 같이 정의할 수 있다. package me.xxxelppa.study.week011; public enum WhiteshipLectureList { THE_JAVA_JAV..
# 자바의 멀티쓰레드 프로그래밍에 대해 학습하세요. # 학습할 것 Thread 클래스와 Runnable 인터페이스 쓰레드의 상태 쓰레드의 우선순위 Main 쓰레드 동기화 데드락 멀티쓰레드에 대해 알아보기 전에 미리 알아야 할 것들이 조금 있다. OS(운영체제)에서 실행중인 하나의 프로그램을 프로세스라고 한다. 작업 관리자를 열어보면, 현재 운영체제에서 실행중인 프로세스들을 볼 수 있다. 이것들은 OS 로부터 메모리를 할당 받아 동작한다. 그리고 멀티 태스킹이라는 것도 있다. 딘어에서 느껴지는 것 그대로 동시에 여러가지 일을 처리하는 것을 말한다. 작업 관리자를 보면 동시에 여러가지 프로그램이 실행되고 있는 것을 볼 수 있는데, 이것도 멀티 태스킹의 하나라고 할 수 있다. 그렇다고 해서 멀티 태스킹이라는 ..
# 자바의 예외 처리에 대해 학습하세요. # 학습할 것 자바에서 예외 처리 방법 (try, catch, throw, throws, finally) 자바가 제공하는 예외 계층 구조 Exception과 Error의 차이는? RuntimeException과 RE가 아닌 것의 차이는? 커스텀한 예외 만드는 방법 자바에서 예외 처리 방법 (try, catch, throw, throws, finally), 커스텀한 예외 만드는 방법 자바에서 예외를 처리하는 방법은 다양하다. try ~ catch 를 사용해서 예외를 직접 처리하는 방법. try ~ catch ~ finally 를 사용해서 예외를 직접 처리하고, 예외가 발생해도 꼭 해야하는 후속처리까지 하는 방법. throw를 사용해서 강제로 예외를 발생하는 방법. ..
# 자바의 인터페이스에 대해 학습하세요. # 학습할 것 인터페이스를 정의하는 방법 인터페이스를 구현하는 방법 인터페이스 레퍼런스를 통해 구현체를 사용하는 방법 인터페이스 상속 인터페이스의 기본 메소드 (Default Method), 자바 8 인터페이스의 static 메소드, 자바 8 인터페이스의 private 메소드, 자바 9 본격적으로 인터페이스에 대해 정리하기에 앞서 인터페이스가 무엇인지 정리해보려 한다. 극단적으로 얘기하면 인터페이스는 구현을 강제하도록 하기 위한 것이다. 그러면 불편한게 아닐까 싶은 생각도 있겠지만, 오히려 그 반대라고 생각하면 된다. 생활 속에서 인터페이스의 예를 찾아보면 콘센트가 인터페이스라고 할 수 있다. 적어도 한국에서 사용하는 콘센트의 규격이 정해져있기 때문에 우리는 전자..
# 자바의 패키지에 대해 학습하세요. # 학습할 것 package 키워드 import 키워드 클래스패스 CLASSPATH 환경변수 -classpath 옵션 접근지시자 package 키워드 package 키워드에 앞서 패키지 자체에 대해 생각해보려 한다. 아주 쉽게 생각하면 컴퓨터에 폴더를 생각하면 된다. 실제로 자바에서 패키지 개념도 폴더와 같다. 조금 더 그럴싸하게? 얘기하면 클래스를 묶은 단위로 사용할 수 있다 할 수 있다. 그러면 왜 클래스를 굳이 패키지라는 폴더와 같은 개념을 사용해서 묶도록 했을까. 크게 두가지 이유가 있다. 하나는 같은 이름의 클래스를 선언할 때 구분할 수 있기 때문도 있고 다른 하나는 이 이유의 연장선에서 비슷한 또는 연관있는 클래스끼리 하나의 폴더로 묶어 관리하기 위함이다...