본문 바로가기
728x90

개발/Java53

[Java] 생성자 대신 정적 팩토리 메소드 사용하기 - 예시 코드 public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE : Boolean.FALSE; } - 장점 1. 이름을 가질 수 있다. 생성자와 매개변수만으로는 리턴될 객체의 특성을 제대로 설명하기 어렵다. 예를들면 // 생성자 public class Person { public Person() {} } // 정적 팩토리 메소드 public class Person { private static Person PERSON = new Person(); private Person() {} public static final Person getInstance() { return PERSON; } } 정적 팩토리 메소드는 Person 클래스의 인.. 2023. 1. 1.
[Java] 쓰레드(Thread)의 실행제어 1. 쓰레드의 생성부터 소멸 쓰레드를 생성하고 start()를 호출하면 바로 실행되지 않고 실행 대기열에 저장되어 차례를 기다린다.(큐 자료구조) - FIFO 실행대기상태에 있다가 자신의 차례가 되면 실행상태 실행시간이 다 되거나 yield()를 만날 경우 다시 실행대기상태 실행 중에 suspend(), sleep(), wait(), join(), I/O block를 만나면 일시 정지 상태 일시정지시간이 다되거나, notify(), resume(), interrupt()가 호출되면 실행대기열에서 자신의 차례를 기다린다. 실행을 다 마치거나 stop()이 호출되면 쓰레드는 소멸 - 번호대로 쓰레드가 실행되는 것은 아님 2. 쓰레드의 동기화 - 한 쓰레드가 진행 중인 작업을 다른 쓰레드가 간섭하지 못하도록 .. 2022. 9. 15.
[Java] 쓰레드(Thread)의 기초 1. 프로세스와 쓰레드 - 프로세스는 실행 중인 프로그램을 말한다. - 프로그램을 실행하면 OS로부터 메모리를 할당받아 프로세스가 된다. - 프로세스는 데이터, 메모리 등의 자원과 '쓰레드'로 구성되어 있다. - 자원을 이용하여 실제로 작업을 수행하는 것이 '쓰레드'이다. - 모든 프로세스에는 최소한 하나 이상의 쓰레드가 존재하며, 두 개 이상일 경우 멀티 쓰레드라고 한다. 멀티태스킹과 멀티쓰레딩 - 멀티태스킹은 다중작업을 말한다. 멀티태스킹이 가능하면 여러 개의 프로세스가 동시에 실행될 수 있다. - 멀티쓰레딩은 하나의 프로세스 내에서 여러 쓰레드가 동시에 작업을 수행한다. 멀티쓰레딩의 장단점 장점 - CPU의 사용률을 향상시킨다. - 자원을 효율적으로 사용할 수 있다. - 사용자에 대한 응답성이 향상.. 2022. 9. 14.
[Java] 열거형(enums) 자바의 정석 챕터 13을 읽고 정리 1. 열거형이란? - 열거형은 서로 관련된 상수를 편리하게 선언하기 위해 사용 - 자바의 열거형은 타입에 안전한 열거형 - 실제 값이 같아도 타입이 다르면 컴파일 에러 발생 class Card { static final int HELLO = 0; static final int WORLD = 1; static final int HL = 0; static final int WR = 1; final int kind; final int num; } // 열거형으로 표현 class Card { enum Kind { HELLO, WORLD } enum Value { HL, WR } final Kind kind; final Value value; } - 비교를 하면 if (Card.. 2022. 9. 13.
[Java] 예외처리 자바의 정석 챕터 8을 읽고 정리 개발하다가 '내가 예외처리를 제대로 하고 있는게 맞을까?' 생각이 들어서 책을 보게 됐다.(기초부터 다시 공부하기 위해) 1. 프로그램 오류 - 컴파일 에러: 컴파일 시 발생하는 에러 - 런타임 에러: 실행 시 발생하는 에러 - 논리적 에러: 실행은 되지만, 의도와 다르게 동작하는 것 - 에러: 코드에 의해서 수습될 수 없는 심각한 오류 - 예외: 코드에 의해서 수습될 수 있는 다소 미약한 오류 2. 예외 클래스의 계층구조 - 모든 예외의 최고 조상인 Exception 클래스 3. 예외처리하기 - try-catch - 예외처리의 정의: 프로그램 실행 시 발생할 수 있는 예외에 대비한 코드를 작성하는 것 - 예외처리의 목적: 프로그램의 비정상 종료를 막고, 정상적인 실행상.. 2022. 8. 23.
[Java] Generics 자바의 정석 챕터 13을 읽고 정리 1. 지네릭스란? - 지네릭스는 다양한 타입의 객체들을 다루는 메소드나 컬렉션 클래스에 컴파일 시 타입 체크를 해주는 기능 - 타입 안정성 제공 - 타입체크와 형변환을 생략할 수 있어서 코드가 간결해짐 2. 지네릭 클래스 선언 - 클래스에 지네릭 타입을 넣을 수 있다. class Box { Object item; void setItem(Object item) { this.item = item; } Object getItem() { return item; } } // 지네릭 타입 T를 선언 class Box { T item; void setItem(T item) { this.item = item; } T getItem() { return item; } } - T는 타입변.. 2022. 8. 17.
[Java] 컬렉션 프레임워크 (2) 자바의 정석 챕터 11을 읽고 정리 1.4 Hashset - Hashset은 Set 인터페이스를 구현한 가장 대표적인 컬렉션 - 중복된 요소를 저장하지 않음 - 저장순서를 유지하지 않음 Object[] objArr = {"1", new Integer(1), "2", "2", "3", "3"}; Set set = new Hashset(); for (int i = 0; i < objArr.length; i++) { set.add(objArr[i]); } System.out.println(set); // [1, 1, 2, 3] - "1", "1"은 눈으로 볼 때는 같지만 첫 번째는 String 인스턴스이고, 하나는 Integer 인스턴스라서 중복으로 보지 않음 - 순서 보장을 원하면 LinkedHashSet .. 2022. 8. 16.
[Java] 컬렉션 프레임워크 (1) 자바의 정석 챕터 11을 읽고 정리 1. 컬렉션 프레임워크 - 데이터 군을 저장하는 클래스들을 표준화한 설계 - 컬렉션은 다수의 데이터를 말한다. 1.1 컬렉션 프레임워크의 핵심 인터페이스 - 컬렉션 데이터 그룹은 3가지 (1) List: 순서가 있는 데이터 집합. 중복 허용 구현클래스: ArrayList, LinkedList, Stack, Vector 등 (2) Set: 순서가 없는 데이터 집합, 중복 허용X 구현클래스: HashSet, TreeSet 등 (3) Map: 키와 값의 쌍으로 이루어진 데이터 집합. 순서 없음. 키는 중복 허용X. 값은 중복 허용 - Vector나 Hashtable은 사용하지 말고, ArrayList, HashMap 사용하기 Collection인터페이스 - List와 Set.. 2022. 8. 12.
[Java] 객체 지향 설계 5원칙 - SOLID 스프링 입문을 위한 자바 객체 지향의 원리와 이해를 읽고 간단한 정리. SOLID는 아래 5가지 원칙의 앞 글자를 따서 부르는 이름 (1) SRP(Single Responsibility Principle): 단일 책임 원칙 (2) OCP(Open Closed Principle): 개방 폐쇠 원칙 (3) LSP(Liskov Substitution Principle): 리스코프 치환 원칙 (4) ISP(Interface Segregation Principle): 인터페이스 분리 원칙 (5) DIP(Dependency Inversion Principle): 의존 역전 원칙 1. SRP - 단일 책임 원칙 어떤 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 한다. - 단일 책임 원칙은 클래스 이외에도 속성, .. 2022. 8. 6.
728x90