Java

Java/live-study

[JAVA] 백기선라이브스터디 15주차 람다식

​ 목표 자바의 람다식에 대해 학습하세요. 학습할 것 (필수) 람다식 사용법 함수형 인터페이스 Variable Capture 메소드, 생성자 레퍼런스 람다식 사용법 자바 8 이후부터 인터페이스 내에 추상메서드가 단 하나만 존재하게 되면 람다표현식을 사용 할 수 있다. @FunctionalInterface public interface Foo { void Hello(String msg); // abstract 생략되어있습니다. 이제 다아시죠..? } 다음과 같이 인터페이스 내에 추상메서드가 단 하나만 존재하는 인터페이스를 함수형 인터페이스라고 말합니다. 그럼 함수형 인터페이스를 지원하기전 즉 자바 8 이전에는 무엇을 사용했을까요 ? 다음과 같이 익명클래스 를 사용했습니다. public static void..

Java/live-study

백기선 라이브스터디 14주차 : 제네릭

학습할 것 (필수) 제네릭 사용법 제네릭 주요 개념 (바운디 드 타입, 와일드카드) 제네릭 메서드 만들기 Erasure 제네릭 사용법 제네릭 사용법은 간단하다. 다이아몬드 연산자()에 타입을 정의해주면 끝이다. 하지만 코드를 보다보면 ... 등 여러가지가 존재하는 것을 보았다. 해당 E,T,K ... 등은 무슨 기능이 있는건 아니다. 따라서 원하는 값을 넣어줘도 되긴 하지만 하지만 자바에는 제네릭 명명 규칙이 있는데 다음과 같다. E : 요소(element) K : 키(key) N : 숫자(Number) T : 타입(type) V : 값(value) S, U, V : 2,3,4번째 선언된 타입 해당 규칙은 코드를 이해하는데에 도움을 준다. 따라서 무조건은 아니지만 규칙이 있으니 따라주자. 제네릭 장점 제..

Java/live-study

백기선라이브스터디 13주차 : I/O

목표 자바의 Input과 Ontput에 대해 학습하세요. 학습할 것 (필수) 스트림 (Stream) / 버퍼 (Buffer) / 채널 (Channel) 기반의 I/O InputStream과 OutputStream Byte와 Character 스트림 표준 스트림 (System.in, System.out, System.err) 파일 읽고 쓰기 Stream 스트림은 단 방향으로 만 데이터가 흘러간다. 이러한 특징 때문에 하나의 스트림으로 입력과 출력을 동시에 처리할 수 없다.(FIFO 구조) 스트림으로 양방향으로 데이터를 교환하기 위해선 각각의 inputStream , ouptStream을 가지고 있어야 한다. 자바에서의 Stream 자바에서의 Stream 은 바이트 스트림(Byte Stream) , 문자 스..

Java/live-study

[Java] 백기선 라이브스터디 12주차: 애노테이션

목표 자바의 애노테이션에 대해 학습하세요. 학습할 것 (필수) 애노테이션 정의하는 방법 @retention @target @documented 애노테이션 프로세서 자바 애노테이션을 처음 봤을 때. 흔히 할 수 있는 착각으로 자바 애노테이션에 동작 기능이 내포하고 있다고 생각할 수 있다.(나는 그랬다) 자바 애노테이션 내부에 동작하는 코드가 있음으로 애노테이션을 붙이면 기능이 생기는 줄 알았다. 어떻게 보면 맞는 말 같지만.. 애노테이션에 내부적인 기능은 존재하지 않는다. 애노테이션은 어떠한 목적과 데이터를 가지고 있는 주석일 뿐이다. 즉 애노테이션을 정하여 컴파일, 런타임 과정에 코드를 어떻게 동작하고 조작할 것인지 나타내 주는 정보이다. 애노테이션 정의하는 방법 애노테이션을 정의하는 방법은 별다를 게 ..

Java/live-study

[Java] 백기선 라이브 스터디 11주차 과제: Enum

목표 자바의 열거형에 대해 학습하세요. 학습할 것 (필수) enum 정의하는 방법 enum이 제공하는 메소드 (values()와 valueOf()) java.lang.Enum EnumSet 왜 사용하는가 ? 열거 타입(enum)이란 상수값을 정의한 다음 그외의 값은 허용하지 않는 타입이다. 자바 1.5 이전 열거 타입(enum)이 존재하지 않았을때 다음 코드처럼 사용했었다. public class CARD { public static final int SAMSUNG = 0; public static final int KAKAO =1; public static final int HYUNDAI =2; } 다음과 같은 사용은 정수 열거 패턴(int enum pattern) 이라고 부르는데 해당 패턴은 타입의 ..

Java/live-study

[Java]백기선 라이브 스터디 10주차 과제: 멀티쓰레드 프로그래밍

목표 자바의 멀티쓰레드 프로그래밍에 대해 학습하세요. 학습할 것 (필수) Thread 클래스와 Runnable 인터페이스 쓰레드의 상태 쓰레드의 우선순위 Main 쓰레드 동기화 데드락 Thread 와 Process의 차이점 프로세스와 쓰레드의 차이점은 무엇일까? 프로세스(process) : 실행 중인 프로그램 즉 OS 내에서 돌고 있는 프로그램을 의미한다. 쓰레드(Thread) : 프로세스 내에서 실제 작업을 수행 즉 프로세스는 하나 이상의 쓰레드를 가지고 있다고도 말할 수 있다. 그렇다면 왜 프로세스를 여러 개 즉 멀티 프로세스 프로그래밍이 아니라 멀티 쓰레드 프로그래밍을 할까? 그 이유는 한 프로세스 내의 자원은 다른 프로세스에서 접근할 수 없다. 또한 Context Switching 과정에 있어 많..

Java/live-study

[Java] 백기선 라이브스터디 9주차 : 예외 처리

목표 자바의 예외 처리에 대해 학습하세요. 학습할 것 (필수) 자바에서 예외 처리 방법 (try, catch, throw, throws, finally) 자바가 제공하는 예외 계층 구조 Exception과 Error의 차이는? RuntimeException과 RE가 아닌 것의 차이는? 커스텀한 예외 만드는 방법 오류의 종류 일단 프로그램 오류의 종류는 다음과 같이 3가지로 분류가 된다. 1. 컴파일 에러 -> 구문 에러라고 볼 수 있는데 프로그램이 시작 전에 잡을 수 있는 에러라고 보면 된다. 2. 런타임 에러 -> 프로그램 실행 중에 나타나는 에러로 대체로 Null point error , 0으로 나누기를 실행하는 경우가 있다. 3. 논리적 에러 -> 프로그램이 원하는 기댓값이 나오지 않는 경우 즉 프..

Java/live-study

[JAVA] 백기선 라이브스터디 8주차 과제: 인터페이스

목표 자바의 인터페이스에 대해 학습하세요. 학습할 것 (필수) 인터페이스 정의하는 방법 인터페이스 구현하는 방법 인터페이스 레퍼런스를 통해 구현체를 사용하는 방법 인터페이스 상속 인터페이스의 기본 메서드 (Default Method), 자바 8 인터페이스의 static 메서드, 자바 8 인터페이스의 private 메서드, 자바 9 인터페이스(Interface) 정의하는 방법 인터페이스를 정의 하는 방법을 알아보기 전에 왜 인터페이스를 정의하여 사용할까? 일단 추상(abstract) 클래스와 인터페이스(interface) 공통점과 차이점을 알아보자. 추상(abstract)의 단어의 뜻은 무엇일까? ->사물이 지니고 있는 여러 가지 측면 가운데서 특정한 측면만을 가려내어 포착하는 것이다.(위키백과) 세상에 ..

jay Joon
'Java' 카테고리의 글 목록