JAVA
-
이것이 자바다 7장 상속JAVA/JAVA 2022. 6. 23. 11:11
상속 부모클래스의 멤버를 자식 클래스에 물려주는 것 상속대상(부모의 필드와 메소드) 상속의 효과 부모 클래스 재사용해 자식 클래스 빨리 개발 가능 반복된 코드 중복 줄임 유지보수 객체의 다형성 구현가능 자식 객체 생성하면 부모 객체도 생성됨 명시적인 부모 생성자 호출 - super()는 부모의 기본 생성자를 호출한다. - 부모클래스에 기본 생성자가 없고, 매개 변수가 있는 생성자만 있다면 반드시 자식 생성자에서 부모 생성자 호출을 위해 super(매갯값, ...)를 명시적으로 호출해야 한다. - 반드시 자식생성자 첫 줄에 위치 public class Parent { String model; String color; Parent(String model, String color) { this.model = ..
-
이것이 자바다 정리 6장 (클래스)JAVA/JAVA 2022. 6. 21. 17:38
객체지향 프로그래밍 부품 객체를 먼저 만들고 이것들을 하나씩 조립해 완성된 프로그램을 만드는 기법 객체지향 프로그래밍의 특징 캡슐화, 상속, 다형성 캡슐화 객체의 내부 구조를 알지 못하게하고, 객체가 제공하는 필드와 메소드만 이용할 수 있게 한다. 상속 부모 객체가 필드와 메소드를 자식 객체에게 물려주는 것을 말한다. - 자식 객체에서는 반복된 코드가 줄어듬.- 부모 클래스 코드 변경시 자식에도 같이 적용됨. 다형성 같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질을 말한다. 예를 들어 타이어타입에 한국 타이어/금호 타이어 객체를 대입하는 것을 말한다. 객체/클래스/ 인스턴스 클래스는 설계도, 클래스에는 객체를 생성하기 위한 필드와 메서드로 정의되어 있음. 클래스로부터 만들어진 객체를 해당..
-
이것이 자바다 정리 5장 (참조 타입)JAVA/JAVA 2022. 6. 21. 16:44
데이터 타입 분류 기본 타입 : byte(1), char(2), short(2), int(4), long(8), float(4), double(8), boolean 참조 타입 : 배열 타입, 열거 타입, 클래스, 인터페이스 스택 각 스레드마다 하나 씩 존재하며 스레드가 시작될 때 할당됨. 로컬 변수 스택에 각 변수들이 할당됨. 힙 힙 영역은 객체와 배열이 생성되는 영역임, Garbage Collector가 사용하지 않는 힙영역은 자동으로 제거함. String 문자열은 String 객체를 생성하고 변수는 String 객체를 참조한다. 문자열 리터럴이 동일하다면 같은 String 객체를 공유한다. 서로 다른 객체를 참고하고 싶다면 new 연산자를 사용해야한다. 예시 : String name1 = new St..
-
애노테이션의 변화JAVA/JAVA8 관련 2022. 6. 3. 12:57
애노테이션 관련 두가지 큰 변화 - 자바 8부터 애노테이션을 타입 선언부에도 사용할 수 있게 됨. - 자바 8부터 애노테이션을 중복해서 사용할 수 있게 됨. 타입 선언 부 - 제네릭 타입 - 변수 타입 - 매개변수 타입 - 예외 타입 - ... 타입에 사용할 수 있으려면 - TYPE_PARAMETER : 타입 변수에만 사용할 수 있다. - TYPE_USE : 타입 변수를 포함해서 모든 타입 선언부에 사용할 수 있다. @Retention 애노테이션 - 해당 애노테이션이 언제까지 유지할지 알려주는 애노테이션이다. RetentionPolicy - Retention에는 3가지 속성이 존재한다. - SOURCE, CLASS, RUNTIME Source : 커스텀 애노테이션을 주석처럼 사용하고 싶으면 옵션을 Sou..
-
CompletableFuture2JAVA/JAVA8 관련 2022. 5. 31. 16:54
CompletableFuture는 별다른 Executor를 사용하지 않아도 ForkJoinPool에 있는 Common Pool을 사용한다. 하지만 원한다면 직접 쓰레드풀을 만들어서 사용할 수 있다. 아래 예제와 같이 runAsync()나 supplyAsync() 메서드를 호출할 때 2번째 인자로 줄 수 있다. 콜백을 실행할 풀을 다른곳에서 실행할때에는 thenRunAsync, thenAcceptAsync, thenRunAsync 등을 사용하면된다. public class CompletableFutureP2 { public static void main(String[] args) throws InterruptedException, ExecutionException { ExecutorService execu..
-
CompletableFuture1JAVA/JAVA8 관련 2022. 5. 31. 14:55
CompletableFuture : - 자바에서 비동기 프로그래밍을 지원하는 인터페이스임. - Future에서 하기 어려웠던 작업들을 수월하게 할 수 있음. Future에서 하기 어려웠던 작업들 1) Future를 외부에서 완료시킬 수 없다. 취소하거나 get()에 타임아웃을 설정할 수 없다. 2) 블로킹 코드(get())를 사용하지 않고서는 작업이 끝났을 때 콜백을 실행할 수 없음. -> Future를 통해 결과값을 만들고 무언가를 하는 작업은 get() 이후에 와야한다. 3) 여러 Future를 조합할 수 없다. 예) 이벤트 정보를 가져온 다음에 이벤트에 참여한 회원 목록 가져오기 4) 예외처리용 API를 제공하지 않는다. 비동기로 작업 실행하기 - 리턴값이 없는 작업 : runAsync() 사용 -..
-
Callable과 FutureJAVA/JAVA8 관련 2022. 5. 28. 17:39
Callable - Runnable과 유사하지만 작업의 결과를 받을 수 있다. (return) Callabel 관련 메서드 get() - 블록킹 콜이다. - 타임아웃을 설정할 수 있다. - 아래 예제의 경우 Started!!!을 출력하고 Callable 작업이 완료 된 이후(2초 Thread.sleep) End!!!를 출력한다. isDone() - 작업을 종료 했으면 true, 종료하지 못했으면 false를 리턴한다. public class CallabeAndFuture { public static void main(String[] args) throws ExecutionException, InterruptedException { ExecutorService executorService = Executo..
-
Concurrent - ExecutorJAVA/JAVA8 관련 2022. 5. 22. 01:13
앞서 다룬 Thread나 Runnable와 같이 Low-Level API를 직접 다루는 것이 아닌, 쓰레드를 만들고 관리하는 작업을 고수준 API인 Executors에 위임하는 것 고수준 (High-Level) Concurrency 프로그래밍 쓰레드를 만들고 관리하는 작업을 애플리케이션에서 분리. 그런 기능을 Executors에게 위임. Executors가 하는 일 쓰레드 만들기: 애플리케이션이 사용할 쓰레드 풀을 만들어 관리한다. 쓰레드 관리: 쓰레드 생명 주기를 관리한다. 작업 처리 및 실행: 쓰레드로 실행할 작업을 제공할 수 있는 API를 제공한다. 단일 쓰레드 사용 public class Executor1 { public static void main(String[] args) { // 쓰레드를 ..