Java/java study
-
Java - 람다식Java/java study 2022. 4. 10. 21:28
람다식 사용법 함수형 인터페이스 Variable Capture 메서드, 생성자 레퍼런스 람다식이란? 람다식은 JDK 1.8부터 추가된 것으로 메서드를 하나의 '식(expression)'으로 표현한 것이다. 람다식을 사용함으로써 코드가 간결해지고 또한 가독성이 증가되는 여러 이점등이 있다. 메서드를 람다식으로 표현하면 메서드의 이름과 반환값이 없어지므로 람다식을 익명함수(anonymous function)라고도 한다. 람다식의 특징 익명 - 보통의 메서드와 달리 이름이 없으므로 익명이라 표현한다. - 구현해야 할 코드에 대한 걱정거리가 줄어듬 함수 - 람다는 메서드처럼 특정 클래스에 종속되지 않으므로 함수라고 불린다. - 메서드처럼 파라미터 리스트, 바디, 반환형식, 가능한 예외 리스트를 포함한다. 전달 ..
-
Java - 제네릭(Generics)Java/java study 2022. 4. 3. 22:26
제네릭(Generics) 제네릭 사용법 제네릭 - 바운디드 타입 제네릭 - 와일드카드 제네릭 메서드 제네릭(Generics)란? 지네릭스는 다양한 타입의 객체를 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입 체크를 해주는 기능이다. 객체의 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안정성을 높이고 형 변환의 번거로움을 줄일 수 있다. - 타입 안정성 의도하지 않은 타입의 객체가 저장되는 것을 막고, 저장된 객체를 꺼내올 때 원래의 타입과 다른 타입으로 잘못 형 변환되어 발생할 수 있는 오류를 줄여준다. - 제네릭을 사용하는 이유 제네릭 타입을 사용함으로써 잘못된 타입이 사용될 수 있는 문제를 컴파일 과정에서 제거할 수 있기 때문 자바 컴파일러는 코드에서 잘못 사용된 타입 때문에 발생하는 문제점을..
-
Java - Input과 Output(I/O)Java/java study 2022. 3. 27. 23:13
Input과 Output 스트림(Stream) / 버퍼(Buffer) / 채널(Channel) 기반의 I/O InputStream과 OutputStream Byte와 Character 스트림 표준 스트림(System.in, System.out, System.err) 파일 읽고 쓰기 I/O(Input/Output) I/O 란? I/O란 Input과 Output의 약자로 입력과 출력, 간단히 입출력이라 한다. I/O를 이용하여 시스템은 컴퓨터 내부 또는 외부 장치와 프로그램간의 데이터를 주고 받는 것을 말한다. 스트림(stream) 스트림이란 데이터를 운반하는데 사용되는 연결 통로이다. 자바에서 데이터를 전달하고자 할 때, 두 대상을 연결하고 데이터를 전송할 수 있는 통로가 필요한데 이것을 스트림(strea..
-
Java - 애노테이션(annotation)Java/java study 2022. 3. 6. 20:37
애노테이션이란? 개발자들은 소스코드에 대한 문서를 따로 만들기 보다 소스코드와 문서를 하나의 파일로 관리하는 것이 낫다고 판단했다. 그래서 소스코드의 주석 /** ~~ */에 소스코드에 대한 정보를 저장하고, 소스코드의 주석으로부터 HTML문서를 생성해내는 javadoc.exe라는 프로그램을 만들어서 사용했다. 위와 같이 소스코드 안에 다른 프로그램(ex: javadoc.exe)을 위한 정보를 미리 약속된 형식으로 포함시킨 것이 바로 애노테이션이다 애노테이션은 주석처럼 프로그래밍 언어에 영향을 미치지 않으면서 다른 프로그램에게 정보를 제공 한다. ex) @Test 애노테이션 같은 경우 테스트 프로그램인 JUnit에게 테스트를 해야한다고 알리기만 할 뿐 메서드가 포함된 프로그램 자체에는 아무런 영향을 미치..
-
Java - enum이란Java/java study 2022. 2. 27. 22:58
enum이란? Enum(열거형)은 서로 관련된 상수들을 정의하여 편리하게 사용하기 위한 자료형이다. 기존의 상수를 사용하면서 발생했던 문제점과 불편했던 점 등을 개선하고자 jdk1.5부터 추가된 기능이다. enum이 생긴 이유 enum 정의 Enum 클래스에 제공하는 메서드 EnumSet enum이 생긴 이유 코드의 가독성을 높여준다. 열거형이 가지는 값뿐만 아니라 타입까지 관리하기 때문에 논리적인 오류를 줄일 수 있다. 상수와 리터럴이 논리적인 연관이 없다. 서로 다른 개념끼리 이름이 충돌할 수 있다. 서로 다른 개념임에도 비교 연산이 가능한다. enum 정의 1. num에 정의된 상수들은 해당 enum type의 객체이다. enum Fruit { APPLE, PEACH, BANANA } 위와 같은 열..
-
Java - ThreadJava/java study 2022. 2. 20. 22:32
Thread 개념 정리 Thread 생성 방법과 실행 Thread 상태와 메서드 Thread 우선순위 Main Thread 동기화(Synchronization) 교착상태(DeadLock) 개념 정리 프로세스(Process) 프로그램을 실행하면 OS로부터 실행에 필요한 자원(메모리)을 할당받아 프로세스가 된다. 실행 중인 프로그램을 의미 프로세스가 작업을 수행하는 것이 아닌 스레드가 프로세스로부터 자원을 할당받아 수행한다. 구성 : 프로그램에 사용되는 데이터, 메모리 등의 자원과 스레드 스레드(Thread) 프로세스로부터 자원을 할당받아 실제로 작업을 처리 경량 프로세스라고 불리며 가장 작은 실행 단위이다. 한번 사용한 스레드는 재사용이 불가하다. 모든 프로세스에는 최소 하나 이상의 스레드가 존재 - 싱글..
-
Java - 예외 처리Java/java study 2022. 2. 13. 16:50
예외 처리 목차 예외(Exception)와 에러(Error)의 차이 자바에서 예외 처리 방법 (try, catch, throw, throws, finally) 커스텀 예외 예외(Exception)와 에러(Error) 에러(Error) - 시스템의 비정상적인 상황이 생겼을 때 발생하여 비정상 종료가 발생 - 시스템 레벨에서 발생하기 때문에 심각한 오류 - 프로세스에 영향을 준다. - OutOfMemoryError, StackOverflowErr 등 예외(Exception) - 프로그램이 비정상적으로 종료되지 않도록 예외 처리를 할 수 있다. - 개발자가 구현한 로직에서 발생 - 쓰레드에 영향을 준다. CheckedException과 UnCheckedException의 차이 UnCheckedException..
-
Java - 인터페이스(interface)Java/java study 2022. 2. 6. 20:21
인터페이스 정의하는 방법 인터페이스 구현하는 방법 인터페이스 레퍼런스를 통해 구현체를 사용하는 방법 인터페이스 상속 인터페이스의 기본 메서드 (Default Method), 자바 8 인터페이스의 static 메서드, 자바 8 인터페이스의 private 메서드, 자바 9 인터페이스 추상 메서드와 상수 필드만 가질 수 있는 클래스의 변형체 필요한 기능을 공통화하여 강제성을 부여 다중 상속 가능 구분 추상 클래스 인터페이스 상속 단일 상속 다중 상속 구현 extends 사용 implements 사용 추상 메서드 abstract 메소드 0개 이상 모든 메서드는 abstract abstract 명시적 사용 묵시적으로 abstract 사용 객체 객체 생성 불가 객체 생성 불가 용도 참조 타입 참조 타입 인터페이스 ..