목록Java (37)
개발놀이터
*람다 표현식 람다 표현식이란 간단히 말해 메소드를 하나의 식으로 표현한 것이다. int min(int x, int y) { return x x { 함수몸체 } 자바에서 람다 표현식을 작성할 때 유의해야할 사항은 다음과 같다. 1. 매개변수의 타입을 추론할 수 있는 경우에는 타입을 생략할 수 있다. 2. 매개변수가 하나인 경우에는 괄호를 생략할 수 있다. 3. 함수의 몸체가 하나의 명령문만으로 이루어진 경우에는 중괄호를 생략할 수 있다. 4. 함수의 몸체가 하나의 return 문으로만 이루어진 경우에는 중괄호를 생략할 수 있다. 5. return 문 대신 표현식을 사용할 수 있으며, 이때 반환값은 표현식의 결괏값이 된다.
*Map 컬렉션 클래스 Map 인터페이스는 Collection 인터페이스와는 다른 저장 방식을 가진다. Map 인터페이스를 구현한 Map 컬렉션 클래스들은 키와 값을 하나의 쌍으로 저장하는 방식을 사용한다. 여기서 키란 실질적인 값을 찾기위한 이름의 역할을 한다. Map 인터페이스를 구현한 모든 Map컬렉션 클래스는 다음과 같은 특징을 가진다. 1. 요소의 저장순서를 유지하지 않는다. 2. 키는 중복을 허용하지 않지만, 값의 중복은 허용한다. 대표적인 Map 컬렉션 클래스에 속하는 클래스는 다음과 같다. 1. HashMap 2. Hashtable 3. TreeMap *HashMap 클래스 HashMap 클래스는 Map 컬렉션 클래스에서 가장 많이 사용되는 클래스 중 하나이다. JDK 1.2 부터 제공된 ..
*Stack 클래스 Stack 클래스는 List 컬렉션 클래스의 Vector 클래스를 상속받아, 전형적인 스택 메모리 구조의 클래스를 제공한다. 스택 메모리 구조는 선형 메모리 공간에 데이터를 저장하면서 후입선출의 시멘틱을 따르는 자료구조이다. 즉, 가장 나중에 저장된 데이터가 가장 먼저 인출되는 구조이다. Stack 클래스는 스택 메모리 구조를 표현하기 위해, Vector 클래스의 메소드를 5개만 상속받아 사용한다. boolean empty() : 해당 스택이 비어있으면 true를 비어있지 않으면 false를 반환함 E.peek() : 해당 스택의 제일 상단에 있는(제일 마지막으로 저장된) 요소를 반환함. E.pop() : 해당 스택의 제일 상단에 있는(제일 마지막으로 저장된) 요소를 반환하고, 해당 ..
*List 컬렉션 클래스 List 인터페이스를 구현한 모든 List 컬렉션 클래스는 다음과 같은 특징을 가진다. 1. 요소의 저장 순서가 유지된다. 2. 같은 요소의 중복 저장을 허용한다. 대표적인 List 컬렉션 클래스에 속하는 클래스는 다음과 같다. 1. ArrayList 2. LinkedList 3. Vector 4. Stack *ArrayList 클래스 ArrayList클래스는 가장 많이 사용되는 컬렉션 클래스 중 하나이다. JDK 1.2 부터 제공된 ArrayList 클래스는 내부적으로 배열을 이용하여 요소를 저장한다. ArrayList 클래스는 배열을 이용하기 때문에 인덱스를 이용해 배열 요소에 빠르게 접근할 수 있다. 하지만 배열은 크기를 변경할 수 없는 인스턴스이므로, 크기를 늘리기 위해서..
자바에서 제네릭(generic)이란 데이터 타입을 일반화한다(generalize)는 것을 의미한다. 제네릭은 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법이다. 이렇게 컴파일시에 미리 타입 검사를 수행하면 다음과 같은 장점을 지닌다. 1. 클래스나 메소드 내부에서 사용되는 객체의 타입 안정성을 높일 수 있다. 2. 반환값에 대한 타입 변환 및 타입 검사에 들어가는 노력을 줄일 수 있다. *제네릭의 선언 및 생성 자바에서 제네릭은 클래스와 메소드에만 다음과 같은 방법으로 선언할 수 있다. class MyArray { T element; void setElement(T element) { this.element = element; } T getElement() { return..
*인터페이스 자식 클래스가 여러 부모 클래스를 상속받을 수 있다면, 다양한 동작을 수행할 수 있다는 장점을 가지게 된다. 하지만 클래스를 이용하여 다중 상속을 할 경우 메소드 출처의 모호성 등 여러가지 문제가 발생할 수 있어 자바에서는 클래스를 통한 다중 상속은 지원하지 않는다. 하지만 다중 상속의 이점을 버릴 수는 없기에 자바에서는 인터페이스라는 것을 통해 다중 상속을 지원하고 있다. 인터페이스란 다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상클래스를 의미한다. 자바에서 추상 클래스는 추상 메소드뿐만 아니라 생성자, 필드, 일반 메소드도 포함할 수 있다. 하지만 인터페이스는 오로지 추상 메소드와 상수만을 포함할 수 있다. *인터페이스의..
*추상 메소드 추상 메소드란 자식 클래스에서 반드시 오버라이딩 해야만 사용할 수 있는 메소드를 의미한다. 자바에서 추상 메소드를 선언하여 사용하는 목적은 추상 메소드가 포함된 클래스를 상속받는 자식 클래스가 반드시 추상 메소드를 구현하도록 하기 위함이다. 예를 들면 모듈처럼 중복되는 부분이나 공통적인 부분은 미리 다 만들어진 것을 사용하고, 이를 받아 사용하는 쪽에서는 자신에게 필요한 부분만을 재정의하여 사용함으로써 생산성이 향상되고 배포 등이 쉬워지기 때문이다. 이러한 추상 메소드는 선언부만이 존재하며, 구현부는 작성되어 있지 않는다. 바로 이 작성되어 있지 않은 구현부를 자식 클래스에서 오버라이딩하여 사용하는 것이다. 자바에서 추상 메소드는 다음과 같은 문법으로 선언한다. abstract 반환타입 메..