본문 바로가기

컴퓨터학원(복습)(수료)

자바(JAVA)기반 안드로이드 웹&앱 개발 21일차(이진탐색, 복사, enum(열거), 가변인자, nested class, Inner class - Member class)

1. 컬렉션 프레임워크 2 : 찾기(binarySearch)

public static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key)

.1) binarySearch(이진탐색)을 사용하려면 정렬이 우선되어야 한다.

※ 찾기(binarySearch, 이진탐색) 예시

1. 컬렉션프레임워크 2 : 찾기(Comparator<T> 기반)

public static <T> int binarySearch(List<? extends T> list, T key, Comparator<? super T> c)

※ 대소문자를 무시하여 Comparator<T> 활용 예시

 

1. 컬렉션프레임워크 2: 복사하기

public static <T> void copy(List<? super T> dest, List<? extends T> src)

☞ src의 내용을 dest로 복사

☞ dest에 T형 인스턴스를 넣는 것(get)만 허용하겠다. 꺼내는 것(set)은 컴파일 에러!

☞ src로부터 T형 인스턴스를 꺼내는 것(set)만 허용하겠다. 넣는 것(get)은 컴파일 에러!

.1) 매개변수 dest에 전달되는 컬렉션 인스턴스의 저장 공간이 src에 전달되는 컬렉션

....인스턴스의 저장 공간보다 크거나 최소한 같아야 한다.

.2) dest로 전달된 인스턴스의 저장 공간이 작다면 복사의 과정에서 공간이 자동으로 늘지

....않고 예외가 발생한다.

※ 컬렉션 프레임워크 2 복사(copy) 예시

 

1. 열거형(enum)

.1) 인터페이스 기반의 상수 정의

..(1) 인터페이스 내에 선언된 변수는 public, static, final이 선언된 것으로 간주한다.

..(2) 열거형은 클래스와 성격이 유사하다. 따라서 다음과 같이 참조변수의 선언도 가능하다.

......단, 선언된 참조변수는 해당 열거형 내에 선언된 ‘열거형 값’만 대입이 가능하다.

※ 열거형 값 예시

 

..(3) 클래스 내에 열거형의 정의도 가능하다.

※ 클래스 내 열거형 예시

 

..(4) ‘열거형 값’의 실체를 표현하자면 아래와 같다.

☞ public static final 열거형클래스 참조변수 = new 열거형클래스();

☞ 생성자가 private 라 실제 컴파일은 안된다.

※ 인자를 전달받는 열거형의 생성자 정의방법과 이를 호출하는 방법

 

매개변수의 가변인자 선언

.1) 매개변수를 선언할 때 ‘가변인자선언’을 하면 전달되는 인자의 수에 제한을 두지

....않을 수 있다.

public static void 메소드이름(String...vargs)

※ 매개변수의 가변인자 선언 예시

 

어노테이션(Annotations)

.1) @Override

..(1) 메소드 오버라이딩 및 인터페이스의 구현을 위한 메소드의 정의에도 사용 가능하다.

..(2) 상위 클래스의 메소드 오버라이딩 또는 인터페이스에 선언된 추상 메소드의 구현이다.

.2) @Deprecated

..(1) 문제의 발생 소지가 있거나 개선된 기능의 다른 것으로 대체되어서 더 이상 필요

.....없게 되었음을 뜻한다.

..(2) 즉, 아직 호환성 유지를 위해 존재하지만 이후에 사라질 클래스 또는 메소드를 가리킨다.

.3) @SuppressWarnings

..(1) 컴파일러의 경고를 지울 수 있다.

..(2) @SuppressWarnings(“deprecation”)

 

네스티드(nested) 클래스

.1) 클래스 안에 또 다른 클래스를 정의할 수 있다.

.2) 클래스 내에 정의된 클래스를 ‘네스티드 클래스(Nested Class)’라고 한다.

.3) 네스티드 클래스를 감싸는 클래스를 ‘외부 클래스(Outer Class)’라고 한다.

.4) 네스티드(nested) 클래스의 구분

..(1) Static 네스티드 클래스

..(2) Non-static 네스티드 클래스(=’이너(Inner) 클래스‘)

...- 멤버 이너 클래스, 로컬 이너 클래스, 익명 이너 클래스로 나뉜다.

 

네스티드(nested) 클래스 中 Static Nested Class

.1) static 선언이 갖는 특성이 반영된 클래스이다.

.2) 자신을 감싸는 외부 클래스의 인스턴스와 상관없이 Static 네스티드 클래스의

....인스턴스 생성이 가능하다.

.3) Static Nested Class의 인스턴스 생성은 외부 클래스의 인스턴스 생성과 무관하다.

.4) Static Nested Class 내에서는 외부 클래스에 static으로 선언된 변수와 메소드에만

....접근이 가능하다.

※ StaticNested Class 예시

 

이너(Inner) 클래스의 구분

.1) Nested Class 中 static 선언이 붙지 않은 클래스이다.

.2) Member Class(멤버 클래스)

..(1) 인스턴스 변수, 인스턴스 메소드와 동일한 위치에 정의

.3) Local Class(로컬 클래스)

..(1) 중괄호 내에, 특히 메소드 내에 정의

.4) Anonymous Class(익명 클래스)

..(1) 클래스의 이름이 존재하지 않는 클래스

 

멤버 클래스(Member Class)

.1) 멤버 클래스의 인스턴스는 외부 클래스의 인스턴스에 종속적이다.

※ 멤버클래스 예시