Technology/Java 23

@SafeVarargs 언제 사용할까?

Java 5, 제네릭(generic)와 가변인자(varargs)의 등장 Java 5부터는 제네릭(Generic)과 함께 가변인자(Variable arguments, varargs라고도 함)가 등장했다. 기존 메서드의 매개변수 개수는 고정적이었지만, 가변인자 덕에 동적으로 지정할 수 있게 되었는데, 가변인자는 내부적으로 배열을 이용하므로, 가변인자가 선언된 메서드가 호출될 때마다 새로운 배열이 생성된다. 이때 매개변수로 가변인자가 선언된 메서드는 매개변수로 배열이 선언된 메서드와 달리 인자를 생략할 수 있다는 차이가 있다. 제네릭과 가변인자 혼용 사용 시 발생할 수 있는 문제점 그렇다면 제네릭과 가변인자를 함께 활용하여 아래와 같이 List이라는 매개변수화 타입(parameterized type)의 가변인..

Technology/Java 2022.10.09

Java의 Enum에 대해 알아보자!

Enum이란? Enum은 '열거'라는 뜻을 가지는 enumeration의 약어인데, 자바에서는 JDK1.5부터 Enum Type(이하 '열거형')이라는 특수한 자료형(data type)을 제공한다. 열거형은 특정 변수가 사전에 정의된 상수들의 집합에 속하도록 해주므로, 해당 변수의 값은 사전에 열거형을 통해 정의된 값들 중 하나여야만 한다. 예를 들면, 요일의 경우 '월, 화, 수, 목, 금, 토, 일'로서 단 7개만 존재하므로 열거형 사용을 고려해볼 수 있다. enum 정의하는 방법 enum 키워드를 이용함으로써 다음과 같이 열거형을 정의해볼 수 있다. 단순히 중괄호 { } 안에 상수의 이름을 나열하기만 했다. public enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDA..

Technology/Java 2022.10.02

Java의 멀티 스레드(Multi-Thread) 프로그래밍에 대해 알아보자!

개인적으로 자바의 멀티 스레드 프로그래밍 학습에 앞서 적어도 프로세스와 스레드의 차이 그리고 멀티 태스킹과 멀티 스레드의 차이에 대해선 제대로 알고 넘어가야겠다는 생각이 들었다. 이에 대한 내용은 다음을 참고할 수 있다. 프로세스 vs 스레드 그리고 멀티 태스킹 vs 멀티 스레드 프로세스와 스레드 자바 스터디의 일환으로 자바의 멀티 스레드 프로그래밍을 학습하던 중 이를 다루기 위해서는 앞서 프로세스와 스레드의 차이 그리고 더 나아가서 멀티 태스킹과 멀티 스레 ikjo.tistory.com 스레드의 구현 방법 자바에서 스레드를 구현하는 방법은 Thread 클래스를 상속받는 방법과 Runnable 인터페이스를 구현하는 방법이 있다. Thread 클래스를 상속받는 방법 먼저 Thread 클래스를 상속받아 스레..

Technology/Java 2022.09.25

Java의 예외(Exception)에 대해 알아보자!

프로그램에서 발생할 수 있는 3가지 에러 예외 처리를 다루기 앞서 우선 프로그램에서 발생할 수 있는 3가지의 에러에 대해 알아보자. 첫 번째는 컴파일 에러이다. 이는 컴파일러가 소스코드를 컴파일할 경우 오타, 자료형 체크 등의 기본적인 검사를 수행함으로써 프로그램이 실행되기 전에 에러가 발생한다. 두 번째는 런타임 에러이다. 이는 프로그램이 실행 중에 발생하는 에러로 이로 인해 잘못된 결과를 얻거나 프로그램이 비정상적으로 종료될 수 있다. 마지막으로 논리적 에러이다. 이는 컴파일 에러나 런타임 에러는 없지만, 개발자가 원래 의도한 것과 다르게 동작하는 것을 말한다. 예외(Exception)란? 앞서 프로그램에서 발생할 수 있는 3가지 에러에 대해 간단히 살펴보았는데, 자바에서는 런타임 에러를 '에러(Er..

Technology/Java 2022.09.12

Java의 인터페이스에 대한 고찰

실생활에서의 인터페이스 인터페이스란 무엇일까? 인터페이스는 객체(사람, 사물 등)간 상호작용하기 위한 행동(action)이라고 할 수 있다. 예를 들어, 어떤 고객이 식당에서 특정 메뉴를 주문한다고 가정했을 때, 고객이 식당에 특정 메뉴를 주문하기 위해서는 일종의 '수단'이 필요하다. 이때 이러한 수단에는 카운터 직원이나 키오스크 등이 존재할 수 있다. 즉, 가게에서는 고객의 주문을 위한 수단으로서 카운터 직원, 키오스크 등의 수단을 제공하는데, 이러한 수단들은 공통적으로 '주문 받기', '결제하기' 등의 행동으로 고객들과 상호작용한다. 고객 입장에서는 자신을 응대하는 수단이 무엇인지와 또한 내부 처리 과정이 어떤지에 대해서는 큰 관심이 없다. 단지 메뉴를 주문하기 위해 해당 수단이 제공하는 '주문 받기..

Technology/Java 2022.09.08