live-study
-
[live-study] 12. 어노테이션 (Annotation)개발/Java 2021. 2. 20. 21:25
Annotation 목표 자바의 애노테이션에 대해 학습하세요. 학습할 것 (필수) 애노테이션 정의하는 방법 @retention @target @documented 애노테이션 프로세서 어노테이션 이란? 어노테이션은 코드에 넣는 주석이라고 보면 되고, 컴파일 과정이나 실행 중 코드를 어떻게 처리할지 알려주는 메타데이터다. 이 자체는 기능을 가지지 않는다. 즉, 런타임중에 알아야하는 데이터는 못들어간다. 컴파일러 수준에서 해석되거나 완전히 정적이어야 한다. Spring MVC 에서 @GetMapping(변수) 가 불가능하다. 컴파일 과정이나 실행 중 코드를 처리하는 것은 보통 다음 3가지 이다. 컴파일러가 문법 오류를 체크할 수 있도록 정보 제공 (@Override) 소프트웨어 개발 툴이 빌드나 배치시 코드를..
-
[live-study] 11. enum개발/Java 2021. 2. 20. 21:24
live-study 11주차 목표 자바의 열거형에 대해 학습하세요.학습할 것 (필수) enum 정의하는 방법 enum이 제공하는 메소드 (values()와 valueOf()) java.lang.Enum EnumSet enum enum(열거형) 이란? enum은 계절 이나 요일 처럼 하나의 집합을 상수로 정의할 수 있는 특별한 데이터 타입이다. 상수를 정의한다고 해서 서로 아무 관련이 없는 상수들을 정의해놓는 것은 바람직 하지 않다. 예를 들어 JAVA_VERSION 과 OS_VERSION 를 묶는 것은 바람직 하지 않다. 정의한 상수는 하나의 타입이 되어 type-safety하게 코드를 작성할 수 있게 해준다. enum 정의하는 방법 클래스나 인터페이스와 같은데, class/interface 키워드 대신..
-
[live-study] 10. 멀티쓰레드개발/Java 2021. 1. 23. 13:02
멀티쓰레드 프로그래밍 프로세스(Process)와 스레드(Thread)란 무엇인가? 스레드를 알기 전에, 프로세스를 먼저 알아야 한다. 프로세스는 운영체제에서 실행중인 (보통)하나의 응용 프로그램 단위를 말한다. 하나의 응용 프로그램을 실행하면 운영체제로부터 그에 필요한 메모리를 할당받아 독립적인 공간을 가지고 있다. 스레드는 프로세스가 가지는 작은 프로세스이자 하나의 실행 환경이라고 볼 수 있다. 프로세스는 최소 하나의 스레드를 가지며, 자원을 공유한다. (메신저에서 파일을 보내는 것, 메세지를 보내는 것 각각이 스레드라고 볼 수 있다.) 프로세스 내부에서 이러한 스레드가 여러개 존재하면 멀티 스레드이다. Main 쓰레드 우리가 자바 애플리케이션을 실행시키면 가장 먼저 main() 메소드를 실행시킨다. ..
-
[live-study] 9: 예외 처리개발/Java 2021. 1. 14. 18:01
live-study 목표 자바의 예외 처리에 대해 학습하세요. 학습할 것 (필수) 자바에서 예외 처리 방법 (try, catch, throw, throws, finally) 자바가 제공하는 예외 계층 구조 Exception과 Error의 차이는? RuntimeException과 RE가 아닌 것의 차이는? 커스텀한 예외 만드는 방법 예외 처리 예외(Exception) 란? 사용자의 잘못된 조작이나, 개발자의 잘못된 코딩으로 발생하는 프로그램 오류다. 예외가 발생하면 프로그램이 곧장 종료된다. 그러나 예외 처리를 하면 프로그램을 종료하지 않고 실행 상태를 유지할 수 있다. 에러(Error)와의 차이점 컴퓨터 하드웨어 오작동이나 고장으로 인한 프로그램 실행 오류는 에러라고 한다. 에러가 발생하면 JVM 실행에..
-
[live-study] 8: 인터페이스개발/Java 2021. 1. 9. 10:45
목표 자바의 인터페이스에 대해 학습하세요. 학습할 것 (필수) 인터페이스 정의하는 방법 인터페이스 구현하는 방법 인터페이스 레퍼런스를 통해 구현체를 사용하는 방법 인터페이스 상속 인터페이스의 기본 메소드 (Default Method), 자바 8 인터페이스의 static 메소드, 자바 8 인터페이스의 private 메소드, 자바 9 인터페이스란 인터페이스란 객체가 할 일을 정의해놓은 타입이다. 구현 코드(객체를 사용하는 코드)와 객체 사이에 위치해서 서로 통신하도록 다리 역할을 한다. 다리 역할을 해줌으로서 교환성이 높아지고, 곧 다형성의 구현을 의미한다. 모든 기능을 추상적으로 정의하여 설계도처럼 사용한다. 자바8 부터 static 메소드나 default 메소드로 추상화가 아닌 구현도 가능해졌다. 자바8..
-
[live-study] 7: 패키지개발/Java 2021. 1. 8. 20:33
목표 자바의 패키지에 대해 학습하세요. 학습할 것 (필수) package 키워드 import 키워드 클래스패스 CLASSPATH 환경변수 -classpath 옵션 접근지시자 package 키워드 패키지란? 특징 패키지란 하나의 디렉토리와 같은 것이다. 패키지명은 파일 구조와 동일해야 한다. 서로 관련 타입들을 그룹화하고 네임스페이스를 정의한다. 패키지와 타입(class, interface, enum..)의 이름을 합쳐야 FQCN(Fully Qualified Class Name)이 된다. 예를 들어 String 클래스의 패키지는 java.lang이고, FQCN은 java.lang.String이 된다. String str = "class name"; java.lang.String fqcn = "Fully Q..
-
[live-study] 6: 상속개발/Java 2021. 1. 6. 16:02
목표 자바의 상속에 대해 학습하세요. 학습할 것 (필수) 자바 상속의 특징 super 키워드 메소드 오버라이딩 다이나믹 메소드 디스패치 (Dynamic Method Dispatch) 추상 클래스 final 키워드 Object 클래스 자바 상속의 특징 상속이란? 현실 세계의 상속은 부모가 가진 재산을 자식이 물려받는 것을 의미한다. 자바에서 상속도 마찬가지로 상위 클래스의 필드와 메소드를 하위 클래스에서 물려받아 사용할 수 있게 해주는 기능을 말한다. 자바의 상속은 "상속"보다 재사용과 확장에 더 가깝다. 상속이라고 설명하면 다음과 같은 가계도를 떠올리기 쉽다. 자바의 상속은 가계도보단, 분류도를 떠올리는게 적절하다. 위의 그림에서 생물은 동물과 식물의 상위 클래스라고 부르고, 동물과 식물은 생물의 하위 ..
-
[live-study] 5: 클래스개발/Java 2021. 1. 1. 23:48
백기선님이 진행하시는 live-study 5주차 과제 5주차 과제 목표 자바의 Class에 대해 학습하세요. 학습할 것 (필수) 클래스 정의하는 방법 객체 만드는 방법 (new 키워드 이해하기) 메소드 정의하는 방법 생성자 정의하는 방법 this 키워드 이해하기 과제 (Optional) int 값을 가지고 있는 이진 트리를 나타내는 Node 라는 클래스를 정의하세요. int value, Node left, right를 가지고 있어야 합니다. BinrayTree라는 클래스를 정의하고 주어진 노드를 기준으로 출력하는 bfs(Node node)와 dfs(Node node) 메소드를 구현하세요. DFS는 왼쪽, 루트, 오른쪽 순으로 순회하세요. 클래스 클래스란 객체 모델을 프로그래밍 언어로 표현하기 위한 수단이..