인터페이스 인터페이스의 모든 메서드는 public abstract 메서드이다. (public abstract는 생략 가능) 인터페이스의 모든 멤버 변수는 public static abstract 멤버 변수이다. (public static abstract는 생략 가능) 생략한 제한자는 컴파일러가 자동으로 추가함 default method JDK 1.8부터 인터페이스에 구현부가 있는 default method 또는 static method를 넣어 줄 수 있다. 왜 default method가 추가되었을까? 기존의 인터페이스에 기능의 확장을 위해 메서드를 추가할 때가 있다. 이때 abstract 메서드로 추가한다면 해당 인터페이스를 구현한 모든 구현체에서 추가한 abstract 메서드를 반드시 구현해야 된다는..
enum (열거형) 열거형이란 상수를 정의한 타입이다. 예를 들어 계절이라는 열거형 타입은 SPRING, SUMMER, FALL, WINTER라는 4개의 상수와 그 상수에 해당하는 값을 정의한다. 계절 외에도 성별, 트럼프 카드, 결제 수단 등 제한된 범위의 상수를 표현할 데이터 타입을 찾고 있다면 enum을 사용하도록 하자. 열거형의 장점으로 다음 2가지가 있다. 상수의 의미가 바로 와닿는다. 코드 상의 Gender.MALE, Gender.FEMALE이라는 상수는 각각 성별의 남자와 여자를 나타낸다는 것을 쉽게 알 수 있다. 상수 값을 쉽게 바꿀 수 있다. 열거형의 정의만 바꿔주면 되어 코드는 변하지 않는다. enum 정의와 사용 아래는 열거형을 정의하는 기본 코드다. enum Direction { E..
자바의 에러 프로그램 실행 중 어떤 원인으로 프로그램이 오작동하거나 비정상적으로 종료되는 경우가 있다. 이러한 결과를 초래하는 원인을 에러 또는 오류라고 한다. 에러의 종류는 두 가지로 나눌 수 있다. 컴파일 에러 : 컴파일 시 발생하는 에러. (잘못된 구문, 오타, 자료형 문제 등) 런타임 에러 : 실행 시 발생할 수 있는 에러. 예외 계층 자바의 런타임 에러. 즉 예외의 계층은 아래와 같다. Object : 모든 객체의 부모는 Object이다. 예외도 객체이므로 Object를 상속한다. Throwable : 최상위 예외이다. Error, Exception : 자바는 예외를 크게 Error와 Exception 객체로 구분한다. Error 타입 예외가 발생하면 매우 심각한 오류이므로 프로그램의 비정상 종..
람다식 람다식(Lambda expression)은 메서드를 하나의 식으로 표현한 것이다. 람다식을 익명 함수라고도 부른다. 람다식의 기본 형태는 메서드의 이름과 반환 타입을 제거하고 매개 변수 선언부와 몸통 사이에 -> 을 추가한다. /* int max(int a, int b) { return a > b ? a : b; } */ (int a, int b) -> { return a > b ? a : b; } 함수형 인터페이스 람다식은 익명 클래스와 동등하다. 익명 클래스 선언 시 익명 객체를 반환하는데 람다식도 마찬가지로 익명 객체를 반환한다. 익명 클래스로 만든 익명 객체는 부모 클래스 타입 또는 인터페이스 타입의 참조 변수로 받아 사용할 수 있었다. 하지만 익명클래스에서 부모를 상속받아 추가적인 멤버를..
익명 클래스 클래스 중에는 단 한번만 객체로 생성하고 더 이상 재사용되지 않는 클래스가 있다. 예를 들어 이벤트 처리, 스레드 객체는 보통 프로그램에서 단 한번만 사용된다. 만약 이러한 객체의 클래스를 클래스 파일로 보관한다면 유지보수 측면에서 좋지 않다. 따라서 이런 클래스는 익명 클래스로 만드는 것이 좋다. 익명 클래스(Anonymous Class)는 이름이 없는 클래스를 뜻하며 클래스 선언과 동시에 객체를 생성하는 일회용 클래스다. 이때 생성된 객체를 익명 객체라고 한다. 그 후 더 이상 익명 클래스를 재사용할 수 없다. 익명 클래스를 선언하는 방법 익명 클래스를 선언하는 방법에는 두 가지가 있다. 부모를 상속받은 자식 익명 클래스 선언 인터페이스를 구현한 익명 클래스 선언 객체는 참조 변수로 받아..
Regex (정규식) 전체 문자열 또는 문자열의 substring이 어떤 패턴 또는 규칙을 만족하는지 알고싶을때 Regex (정규식)을 사용한다. Regex는 문자열의 패턴을 나타내는 언어이다. Regex 기호 아래의 사이트에 잘 정리되어 있다. 왼쪽 메뉴의 CheatsSheet를 보고 실습하면서 기호를 파악하고 자세한 내용은 RegEx Reference를 참고하자. https://regexr.com/ RegExr: Learn, Build, & Test RegEx RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp). regexr.com JAVA에서 사용 String 객체의 matches 메서드는 모든 문..
ClassLoader 자바 소스 코드가 컴파일된 클래스 파일(.class)은 JVM에 탑재 되어 실행되면서 자바 프로그램이 실행된다. 그러면 어떻게 클래스 파일을 JVM에 탑재시킬까? 자바의 기본적인 클래스 파일은 $JAVA_HOME 내부 경로에 있으며 자신이 만든, 또는 다른 사람이 만든 클래스 파일은 여러 디렉터리에 흩어져 있다. 흩어져 있는 클래스 파일을 찾아 JVM에 탑재(load) 시키는 역할을 하는 것이 ClassLoader이다. ClassLoader는 크게 Loading, Linking, Initialization 3가지 단계로 클래스 파일을 JVM에 탑재한다. Loading은 클래스 파일을 JVM에 탑재하는 과정, Linking은 클래스 파일을 검증하고 기본 값으로 초기화하는 과정, Ini..