도서 정리/자바의 정석 17

[자바의 정석] CH14 람다와 스트림

자바의 정석 책을 공부하고 정리한 글입니다!혹시라도 틀린 부분이 있다면 친절하게 알려주세요. 감사합니다!CH14. 람다와 스트림람다는 JDK 1.8부터 도입되었으며, 람다식의 도입으로 자바는 객체지향 언어임과 동시에 함수형 프로그래밍의 기능을 일부 갖춘 언어로 발전하였습니다.더보기함수형 언어란?함수형 언어는 함수를 중심으로 프로그램을 구성하는 프로그래밍 언어이며 다음과 같은 장점을 갖고 있습니다:테스트하기 쉽다.상태 공유를 안 하기 때문에 동시성/병렬 처리에 유리하다.재사용성과 추상화에 강하다.버그 발생 확률이 감소한다.람다식(Lambda expression)은 간단히 말해 메서드를 하나의 식으로 표한한 것입니다. 람다식은 함수를 간략하면서도 명확한 식으로 표현할 수 있게 해줍니다.메서드를 람다식으로 표..

[자바의 정석] CH13 쓰레드 (2)

자바의 정석 책을 공부하고 정리한 글입니다!혹시라도 틀린 부분이 있다면 친절하게 알려주세요. 감사합니다!CH13. 쓰레드(Thread) (2)데몬 쓰레드 (daemon thread)데몬 쓰레드는 다른 일반 쓰레드의 작업을 돕는 보조적인 백그라운드 쓰레드입니다. 모든 일반 쓰레드가 종료되면, 더 이상 보조 대상이 없기 때문에 JVM은 남아 있는 데몬 쓰레드를 강제 종료시키고 프로세스를 종료합니다.더보기데몬 스레드는 스스로 작업을 마치면 종료됩니다. 단지 일반 스레드가 모두 종료되면, 작업이 남아 있어도 강제 종료당할 수 있다는 점이 특징입니다.데몬 쓰레드의 예로는 가비지 컬렉터, 워드프로세서의 자동저장, 화면자동갱신 등이 있습니다. 데몬 쓰레드는 일반 쓰레드와 작성 방식과 실행 방식은 동일하지만, star..

[자바의 정석] CH13 쓰레드 (1)

자바의 정석 책을 공부하고 정리한 글입니다!혹시라도 틀린 부분이 있다면 친절하게 알려주세요. 감사합니다!CH13. 쓰레드(Thread) (1)프로세스(process)란 실행 중인 프로그램으로 데이터와 메모리 등의 자원과 쓰레드로 구성되어 있습니다.쓰레드란 프로세스의 자원을 이용하여 실제로 작업을 수행하는 것을 말합니다. 따라서 모든 프로세스에는 최소한 하나 이상의 쓰레드가 존재하며, 둘 이상의 쓰레드를 가진 프로세스를 멀티쓰레드 프로레스라고 합니다. 프로세스를 공장으로 표현했을 때, 쓰레드는 일꾼이라 할 수 있습니다.싱글 쓰레드: 자원 + 일꾼멀티 쓰레드: 자원 + 일꾼 + 일꾼 + ... (여러 명의 일꾼)즉, 멀티쓰레딩이란 하나의 프로세스 내에서 여러 쓰레드가 동시에 작업을 수행하는 것을 말하며, 장..

[자바의 정석] CH12 지네릭스, 열거형, 애너테이션

자바의 정석 책을 공부하고 정리한 글입니다!혹시라도 틀린 부분이 있다면 친절하게 알려주세요. 감사합니다!CH12. 지네릭스, 열거형, 애너테이션제네릭(Generics)제네릭이란 클래스가 가질 타입을 미리 명시해주는 기능을 말합니다. 예를 들어, ArrayList를 생성할 때는 다음과 같이 생성할 수 있습니다.ArrayList list = new ArrayList();ArrayList를 보면 를 사용하여, ArrayList에 들어갈 요소의 타입을 명시해주었습니다. 이때 를 제네릭이라 하며, 을 넣음으로써 타입을 미리 명시해주는 것입니다.이렇게 객체의 타입을 명시해주었으므로, 명시한 타입과 다른 값을 넣을라고 하면 컴파일 에러가 발생하게 됩니다. 이런 제네릭을 사용했을 때의 장점은 다음과 같습니다:타입 안..

[자바의 정석] CH11 컬렉션 프레임워크(2)

자바의 정석 책을 공부하고 정리한 글입니다!혹시라도 틀린 부분이 있다면 친절하게 알려주세요. 감사합니다!CH11. 컬렉션 프레임워크(2)HashSetHashSet은 Set인터페이스를 구현한 가장 대표적인 컬렉션으로 특징은 다음과 같습니다.중복 요소를 허용하지 않는다:add()나 addAll()를 사용하여 새로운 요소를 추가하는데, 만약 중복된 요소를 추가하고자 한다면 이 메서드들은 false를 반환하여 중복된 요소임을 알린다.저장순서를 유지하지 않는다:따라서 HashSet에 저장된 값을 출력하면 저장한 순서와 다르게 출력될 수 있따. 만약 저장순서를 유지하고 싶다면 LinkedHashSet을 사용해야 한다.내부적으로 HashMap을 이용해 만들어져 있다.TreeSetTreeSet은 이진 검색 트리라는 자..

[자바의 정석] CH11 컬렉션 프레임워크(1)

자바의 정석 책을 공부하고 정리한 글입니다!혹시라도 틀린 부분이 있다면 친절하게 알려주세요. 감사합니다!CH11. 컬렉션 프레임워크(1)컬렉션 프레임워크란 컬렉션을 저장하는 클래스들을 표준화한 설계를 의미합니다.컬렉션(collection): 여러 객체를 모아 놓은 것프레임워크(framework): 표준화된 프로그램 방식컬렉션 프레임워크의 핵심 인터페이스는 다음과 같습니다:List순서가 있는 데이터의 집합으로 데이터의 중복을 허용한다. 구현 클래스로는 ArrayList, LinkedList, Stack, Vector 등이 있다.Set순서를 유지하지 않는 데이터의 집합으로 데이터의 중복을 허용하지 않는다. 구현 클래스로는 HashSet, TreeSet 등이 있다.Map키(key):값(value)의 쌍으로 이..

[자바의 정석] CH10 날씨와 시간 & 형식화

자바의 정석 책을 공부하고 정리한 글입니다!혹시라도 틀린 부분이 있다면 친절하게 알려주세요. 감사합니다!CH10. 날짜와 시간 & 형식화형식화 클래스DecimalFormat숫자를 형식화 하는데 사용되는 클래스입니다. 숫자 데이터를 정수, 부동소수점, 금액 등의 다양한 형식으로 표현할 수 있으며, 반대로 일정한 형식의 텍스트 데이터를 숫자로 쉽게 변환하는 것도 가능합니다.SimpleDateFormat날짜 데이터를 원하는 형태로 출력할 수 있도록 도와주는 클래스입니다.ChoiceFormat특정 범위에 속하는 값을 문자열로 변환해주는 클래스입니다. 연속적 또는 불연속적인 범위의 값들이 처리하는 데 있어서 if문이나 switch문은 적절하지 못한 경우가 많습니다. 이럴 때 ChoiceFormat을 잘 사용하면 ..

[자바의 정석] CH09 java.lang패키지와 유용한 클래스 (1)

자바의 정석 책을 공부하고 정리한 글입니다!혹시라도 틀린 부분이 있다면 친절하게 알려주세요. 감사합니다!CH9. java.lang패키지와 유용한 클래스(1)java.lang패키지는 자바 프로그래밍에 가장 기본이 되는 클래스(String클래스, System클래스 등)들을 포함하고 있으며, 여기에 해당하는 클래스는 import문 없이도 사용할 수 있게 되어 있습니다.Object클래스Object클래스는 모든 클래스의 최고 조상이기 때문에 Object의 멤버들은 모든 클래스에서 바로 사용이 가능합니다.equals(Object obj)이 메서드는 매개변수로 객체의 참조변수를 받아 비교하는 역할을 합니다. 다음은 Object클래스에 작성된 equals메서드입니다.위의 코드에서 두 객체를 비교할 때는 참조변수의 값으..

[자바의 정석] CH08 예외처리

자바의 정석 책을 공부하고 정리한 글입니다!혹시라도 틀린 부분이 있다면 친절하게 알려주세요. 감사합니다!CH8. 예외처리프로그램이 실행 중 어떤 원인에 의해 오작동하거나 비정상적으로 종류되는 경우가 있는데, 이를 초래하는 원인을 프로그램 에러 또는 오류라고 합니다.에러는 발생시점에 따라 컴파일 에러와 런타임 에러로 나눌 수 있으며, 이 외에도 논리적 에러가 있습니다.컴파일 에러: 컴파일 시에 발생하는 에러런타임 에러: 실행 시에 발생하는 에러논리적 에러: 실행은 되지만, 의도와 다르게 동작하는 것소스코드를 컴파일 하면 컴파일러는 소스코드에 대해 오타나 잘못된 구문을 알려 줍니다. 컴파일러가 알려준 오류를 모두 수정하면 컴파일을 성공적으로 마치게 되어, 클래스 파일이 생성되며, 생성된 클래스 파일을 실행할..

[자바의 정석] CH07 객체지향 프로그래밍Ⅱ (2)

자바의 정석 책을 공부하고 정리한 글입니다!혹시라도 틀린 부분이 있다면 친절하게 알려주세요. 감사합니다!CH7. 객체지향 프로그래밍 Ⅱ (2)다형성(polymorphism)객체지향개념에서 다형성이란 '여러 가지 형태를 가질 수 있는 능력'을 의미하며, 자바에서는 부모 클래스 타입의 참조변수로 자식 클래스의 인스턴스를 참조할 수 있도록 하였다는 것입니다.class Animal { int age;}class Dog extends Animal { String name;}위와 같이 Animal클래스와 Dog클래스가 정의되어 있을 때, 두 클래스의 포함관계는 다음과 같습니다.두 클래스는 상속관계에 있으며, 두 클래스의 인스턴스를 생성하고 사용하기 위해 다음과 같이 나타낼 수 있습니다.Animal ani..