공부일기/자바 스터디
-
Java 항해일지 - 14. 제네릭공부일기/자바 스터디 2021. 3. 1. 18:52
목표 자바의 제네릭에 대해 학습하세요. 학습할 것 (필수) 제네릭 사용법 제네릭 주요 개념 (바운디드 타입, 와일드 카드) 제네릭 메소드 만들기 Erasure 제네릭이란? 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법. 제네릭은 중복 코드의 제거를 위해 자바 5부터 나왔다. 객체의 타입을 컴파일 시에 체크해 객체의 타입 안정성을 높이고 형변환의 번거로움이 줄어든다. 예를 들어 ArrayList의 경우 다양한 종류의 객체를 담을 수 있긴 하지만 보통 한 종류의 객체를 담는 경우가 많다. 저장할 객체의 타입을 지정해줌으로써 지정한 타입 외에 다른 타입의 객체가 저장되면 에러를 발생시킨다. ArrayList tvList = new ArrayList(); tvList.add(new Tv()); t..
-
Java 항해일지 - 12. 애노테이션공부일기/자바 스터디 2021. 2. 2. 23:43
목표 자바의 애노테이션에 대해 학습하세요. 학습할 것 (필수) 애노테이션 정의하는 방법 @retention @target @documented 애노테이션 프로세서 애너테이션이란? 애너테이션은 프로그램의 소스코드 안에 다른 프로그램을 위한 정보를 미리 약속된 형식으로 포함시킨 것이다. 주석처럼 프로그래밍 언어에 영향을 미치지 않으면서 다른 프로그램에게 유용한 정보를 제공할 수 있다는 장점을 지녔다. 예를 들어 작성한 소스코드 중에 특정 메서드만 테스트하기를 원할 경우, 아래와 같이 '@Test'라는 애너테이션을 메서드 앞에 붙인다. '@Test'는 '이 메서드를 테스트해야 한다'는 것을 테스트 프로그램에게 알리는 역할만 하고, 메서드가 포함된 프로그램 자체에는 아무런 영향을 미치지 않는다. 위에서 설명했듯..
-
Java 항해일지 11. Enum공부일기/자바 스터디 2021. 1. 26. 15:42
목표 자바의 열거형에 대해 학습하세요. 학습할 것 (필수) enum 정의하는 방법 enum이 제공하는 메소드 (values()와 valueOf()) java.lang.Enum EnumSet enum이란? enum은 열거형(enumerated type)이라고 부른다. 열거형은 서로 연관된 상수들의 집합이라고 할 수 있다. 열거형은 연관된 값들을 저장하며, 저장된 값들이 변경되지 않도록 보장한다. 또한 enum의 경우 열거형 그 자체이면서 클래스이기 때문에 enum내부에 생성자나 필드, 메서드를 가질 수 있어 다양한 역할을 할 수 있다. 상수 목록이 필요해 상수목록만 적어놓은 class를 활용한 적이 있는데, 이런 사용은 자제하고 enum을 활용할 수 있다. enum 정의하는 방법 1. 별도의 java 파일..
-
Java 항해일지 10. 멀티스레드 프로그래밍공부일기/자바 스터디 2021. 1. 24. 19:32
목표 자바의 멀티스레드 프로그래밍에 대해 학습하세요. 학습할 것 (필수) Thread 클래스와 Runnable 인터페이스 스레드의 상태 스레드의 우선순위 Main 스레드 동기화 데드락 프로세스와 스레드 프로세스의 사전적 정의는 일의 과정이나 공정이며, 위키백과를 통해 얻은 의미는 다음과 같다. 프로세스는 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 말한다. 종종 스케줄링의 대상이 되는 작업이라는 용어와 거의 같은 의미로 쓰인다. 여러 개의 프로세서를 사용하는 것을 멀티프로세싱이라고 하며 같은 시간에 여러 개의 프로그램을 띄우는 시분할 방식을 멀티태스킹이라고 한다. 그렇다면 스레드란 무엇일까. 마찬가지로 위키백과를 통해 얻은 의미는 아래와 같다. 스레드는 어떠한 프로그램 내에서, 특히 프로세스 내..
-
Java 항해일지 - 9. 예외 처리공부일기/자바 스터디 2021. 1. 17. 19:57
목표 자바의 예외 처리에 대해 학습하세요. 학습할 것 (필수) 자바에서 예외 처리 방법 (try, catch, throw, throws, finally) 자바가 제공하는 예외 계층 구조 Exception과 Error의 차이는? RuntimeException과 RE가 아닌 것의 차이는? 커스텀한 예외 만드는 방법 프로그램을 사용하다가 프로그램이 비정상적으로 종료되는 결과를 초래하는 원인을 프로그램 에러(Error) 또는 오류라고 한다. 에러는 크게 컴파일 에러와 런타임 에러로 구분할 수 있다. 컴파일 에러는 기본적으로 자바 컴파일러가 문법 검사를 통해서 오류를 잡아내 준다. 우리는 컴파일러가 알려주는 오류를 수정하면 성공적으로 컴파일을 해서 프로그램을 실행할 수 있다. 그러나 컴파일이 문제없이 되더라도 실..
-
Java 항해일지 - 8. 인터페이스공부일기/자바 스터디 2021. 1. 8. 19:01
목표 자바의 인터페이스에 대해 학습하세요. 학습할 것 (필수) 인터페이스 정의하는 방법 인터페이스 구현하는 방법 인터페이스 레퍼런스를 통해 구현체를 사용하는 방법 인터페이스 상속 인터페이스의 기본 메소드 (Default Method), 자바 8 인터페이스의 static 메소드, 자바 8 인터페이스의 private 메소드, 자바 9 인터페이스란? 인터페이스는 일종의 추상 클래스이다. 추상클래스처럼 추상메서드를 갖지만 추상 클래스보다 추상화 정도가 높아 오직 추상메서드와 상수만을 멤버로 가질 수 있으며, 그 외의 다른 어떠한 요소도 허용하지 않는다. 추상클래스를 '미완성 설계도'에 비유한다면, 인터페이스는 밑그림만 그려진 '기본 설계도'에 비유할 수 있다. 추상클래스와 마찬가지로 불완전하기 때문에 그 자체로..
-
Java 항해일지 - 7. 패키지공부일기/자바 스터디 2020. 12. 28. 17:07
목표 자바의 패키지에 대해 학습하세요. 학습할 것 (필수) package 키워드 import 키워드 접근제어자 클래스패스 CLASSPATH 환경변수 -classpath 옵션 패키지(package) 클래스의 묶음 클래스 또는 인터페이스를 포함할 수 있고, 서로 관련된 클래스들끼리 그룹 단위로 묶어 클래스를 효율적으로 관리할 수 있다. 클래스의 실제 이름은 패키지명을 포함한 것이다. 예를들어 ArrayList클래스의 경우 실제 이름은 java.util.ArrayList이다. 한 패키지에 속한 클래스는 해당 디렉토리에 존재하는 class파일이어야 한다. 패키지도 다른 패키지를 포함할 수 있으다. 이 경우 '.' 으로 구분한다. 위의 조건들을 예를 들어 설명하면, java.util.ArrayList 클래스는 물..
-
Java 항해일지 - 6. 상속공부일기/자바 스터디 2020. 12. 24. 11:23
상속이란? 기존의 클래스를 재사용해 새로운 클래스를 작성하는 일이다. 상속을 통해 클래스를 작성하게 되면 보다 적은 양의 코드로 새로운 클래스 작성이 가능하고, 코드를 공통적으로 관리할 수 있기 때문에 코드의 추가 및 변경이 매우 용이하다. 코드의 재사용성을 높이고, 코드의 중복을 제거해 프로그램의 생산성과 유지보수에 크게 기여할 수 있다. 자바 상속의 특징 extends : 새로 작성하고자 하는 클래스의 이름 뒤에 상속받고자 하는 클래스의 이름을 extends 키워드와 사용하면 된다. 단일 상속 : 두 개이상의 클래스로부터 상속을 받을 수 없다. 다중 상속을 허용하게 될 경우 여러 클래스로부터 상속받을 수 있어 복합적인 기능을 가진 클래스를 작성하기 쉽지만, 클래스 간의 관계가 매우 복잡해지고 상속받은..