[프로그래머스 자바 중급] Annotation
Annotation이란? 자바 소스 코드에 추가하여 사용할 수 있는 메타데이터의 일종. 클래스나 메소드 위에 붙으며, @(at) 기호로 시작한다. JDK 1.5 버전 이상에서 사용 가능하다.
Annotation이란? 자바 소스 코드에 추가하여 사용할 수 있는 메타데이터의 일종. 클래스나 메소드 위에 붙으며, @(at) 기호로 시작한다. JDK 1.5 버전 이상에서 사용 가능하다.
문자(Char) 기반 스트림(Stream) 자바에서 스트림은 기본적으로 바이트 단위로 데이터를 전송한다. 하지만, 자바에서 가장 작은 타입인 Char 형이 2 바이트이므로, 1 바이트씩 전송되는 바이트 기반 스트림으로는 원활한 처리가 힘든 경우가 있다. 따라서, 자바에...
보조 스트림 자바에서 제공하는 보조 스트림은 실제로 데이터를 주고받을 수는 없지만, 다른 스트림의 기능을 향상시키거나 새로운 기능을 추가해주는 스트림이다.
바이트(Byte) 기반 스트림(Stream) 자바에서 스트림은 기본적으로 바이트 단위로 데이터를 전송한다.
입출력을 위한 인터페이스와 클래스 자바 I/O는 크게 Byte 단위 입출력 클래스와 Char 단위 입출력 클래스로 나뉜다. Byte 단위 입출력 클래스는 InputStream과 OutputStream이라는 추상 클래스를 상속받아 만들어진다. Ch...
java.time 패키지 기존부터 Java에서 제공하는 Date API, Time API는 부족한 기능 지원을 포함한 여러가지 문제점을 가지고 있었다. JDK 코어에서 이런 문제점들을 해결하고, 직관적인 API들을 제공하기 위해 Java SE 8부터 새로운 날짜와 시간 A...
자바에서의 날짜 및 시간 처리 JDK 1.0에서는 Date 클래스를 사용하여 날짜에 관한 간단한 처리를 수행할 수 있었으나, 현재 Date 클래스 대부분의 메소드는 사용을 권장하지 않고(deprecated) 있다. JDK 1.1부터는 새롭게 제공되는 Calendar 클래스...
Date 클래스 날짜와 시간을 구하기 위한 클래스 java.util 패키지에 속한다. Date 클래스는 JDK 1.0에 만들어졌고, Calendar 클래스는 JDK 1.1에 만들어졌다. 지역화에 대한 부분이 고려되지 않았다. 지역에 따라서 시간,...
Map 컬렉션 클래스 Map 인터페이스는 Collection 인터페이스와는 다른 저장 방식을 가진다. Map 인터페이스를 구현한 Map 컬렉션 클래스들은 키와 값을 하나의 쌍으로 저장하는 방식(key-value 방식)을 사용. 여기서 키(key)란 실질...
List 컬렉션 클래스 List 인터페이스를 구현한 모든 List 컬렉션 클래스는 다음과 같은 특징을 가진다. 요소의 저장 순서가 유지된다. 👉 순서 O 같은 요소의 중복 저장을 허용한다. 👉 중복 O List 컬렉션 클래스에 ...
Set 컬렉션 클래스 Set 인터페이스를 구현한 모든 Set 컬렉션 클래스는 다음과 같은 특징을 가진다. 요소의 저장 순서를 유지하지 않는다. 👉 순서 X 같은 요소의 중복 저장을 허용하지 않는다. 👉 중복 X 대표적인 Set ...
제네릭(generic)이란? 자바에서 제네릭이란 데이터의 타입을 일반화(generalize)하는 것을 의미. 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시 미리 지정하는 방법.
컬렉션 프레임워크(collection framework)란? 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합. 즉, 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해놓은 것. 인터페이스(inte...
Math 클래스 수학에서 자주 사용하는 상수들과 함수들을 미리 구현해놓은 클래스. Math 클래스의 모든 메소드는 클래스 메소드(static method)이므로, 객체를 생성하지 않고도 바로 사용할 수 있다. Math 클래스는 생성자가 private로 ...
StringBuffer 클래스 String 클래스와 달리 StringBuffer 클래스의 인스턴스는 값을 변경하고 추가할 수 있다. 내부적으로 버퍼(buffer)라고 하는 독립적인 공간을 가진다. 버퍼 크기의 기본값은 16개의 문자를 저장할 수 있는 크...
String 클래스 자바에서는 문자열을 위한 String 클래스를 제공하고 있다. 문자열과 관련된 작업을 할 때, 유용하게 사용할 수 있는 다양한 메소드가 포함되어 있다. String 클래스는 java.lang 패키지에 포함되어 제공된다.
래퍼 클래스(wrapper class) 기본 타입 데이터를 객체로 포장해주는 클래스 데이터를 인수로 전달받아, 해당 값을 가지는 객체로 만들어준다. 이러한 래퍼 클래스는 모두 java.lang 패키지에 포함되어 제공된다.
java.lang 패키지 자바에서 가장 기본적인 동작을 수행하는 클래스들의 집합. java.lang 패키지의 클래스들은 import 문을 사용하지 않아도 클래스 이름만으로 바로 사용할 수 있음.
예외 회피하기(throws) throws는 예외가 발생했을 때, 예외를 호출한 쪽에서 처리하도록 던져준다. 메소드 선언부에 throws 키워드를 사용하여 해당 메소드를 사용할 때 발생할 수 있는 예외를 미리 명시할 수 있다.
예외 클래스 자바에서 모든 예외의 조상 클래스가 되는 Exception 클래스는 크게 다음과 같이 구분할 수 있다.
오류(error)와 예외(exception) 컴퓨터 시스템이 동작하는 도중에 예상하지 못한 사태가 발생하여 실행 중인 프로그램이 영향을 받는 것을 오류와 예외 두 가지로 구분할 수 있다. 오류는 시스템 레벨에서 프로그램에 심각한 문제를 야기하여 실행 중인 프로그램을 종료시...
내부 클래스(inner class)란? 클래스 안에 선언된 클래스.
인터페이스(interface) 서로 관계가 없는 물체들이 상호작용하기 위해 사용하는 장치나 시스템 인터페이스는 다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스이다. 생성자, 필드, 일반 메소드...
다형성(polymorphism)이란? 하나의 객체가 여러 가지 타입을 가질 수 있는 것. 상속, 추상화와 더불어 객체 지향 프로그래밍을 구성하는 중요한 특징 중 하나.
메소드 오버라이딩(method overriding) 상속받은 부모 클래스의 메소드를 재정의하여 사용하는 것. 자바에서 자식 클래스는 부모 클래스의 private 멤버를 제외한 모든 메소드를 상속받는다. ex) 상속받은 메소드를 그대로 사용...
부모 생성자 클래스가 인스턴스화될 때, 생성자가 실행되면서 객체의 초기화를 한다. 이 때, 자신의 생성자만 실행되는 것이 아니고 부모의 생성자부터 실행된다.
추상 메소드(abstract method) 자식 클래스에서 반드시 오버라이딩(overriding)해야만 사용할 수 있는 메소드. 자바에서 추상 메소드를 선언하여 사용하는 목적은 추상 메소드가 포함된 클래스를 상속받는 자식 클래스가 반드시 추상 메소드를 구현하도록 하기 위함...
접근 제한자란? 클래스 내에서 멤버의 접근을 제한하는 역할을 한다. 필드, 메소드, 클래스 앞에 붙여서 사용.
생성자 오버로딩 생성자의 매개변수 유형과 개수를 다르게 하여 같은 이름의 생성자를 여러 개 가질 수 있다.
메소드 오버로딩 매개변수의 유형과 개수를 다르게 하여, 같은 이름의 메소드를 여러 개 가질 수 있게 하는 기술 매개변수는 다르지만, 비슷한 기능을 하는 메소드(ex. 매개변수를 더한 뒤 반환)들을 하나의 이름으로 사용할 수 있다. 메소드 오버로딩은 매개변수 부분이 달라...
💡 this는 현재 객체, 자기 자신을 나타낸다. this는 객체 자신을 참조하는 키워드이다.
💡 모든 클래스는 인스턴스화될 때 생성자를 사용한다. ex) Car() 부분이 생성자
자바는 변수를 선언할 때, 열거 타입을 변수 타입으로 사용할 수 있다 열거형은 JDK5에서 추가되었다. JDK5 이전에는 상수를 열거형 대신 사용
변수의 Scope 변수가 선언된 블럭이 그 변수의 사용범위이다.
연산자 우선순위 위에서 아래로 내려갈수록 연산자 우선순위가 낮아진다.