본문 바로가기

JAVA/Java26

[Java] 어노테이션(Annotation) 어노테이션 JAVA 5에서 추가된 어노테이션은 자바 컴파일러에게 메세지를 전달하는 목적의 메모이다. 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공하고, 빌드나 배치 시 코드를 자동 생성할 수 있도록 정보를 제공하며, 실행 시 기능을 실행하도록 정보를 제공한다. 표준 어노테이션 자바에서 제공하는 몇 가지 어노테이션 중 대표적인 3가지만 확인하자. @Override 상위 클래스의 메서드 오버라이딩 또는 인터페이스에 선언된 추상 메서드의 구현임을 나타낸다. 잘못된 메서드 오버라이딩 시 컴파일 오류가 발생한다. @Deprecated 문제의 발생 소지가 있거나 개선된 기능의 다른 것으로 대체되어 더 이상 필요 없게 되었음을 표시한다. @Deprecated 를 사용한 메서드 호출 시 컴파일 오류가 발생.. 2022. 9. 13.
[JAVA] 매개변수의 가변 인자(Variable Argument) 선언 ... 이 삽입된 메서드의 선언을 가변 인자 선언이라고 한다. public static void showAll(String... vargs) { ... } showAll("Box"); showAll("Box", "Toy", "Apple"); 메서드 매개변수에 가변 인자 선언을 하면, 전달되는 인자의 수에 제한을 두지 않을 수 있다. vargs는 배열을 참조하기 때문에 length에 접근하여 그 길이를 확인할 수 있다. 자바 컴파일러는 앞에 선언한 가변 인자 선언 및 메서드 호출문을 다음과 같이 수정하여 컴파일을 완료한다. public static void showAll(String[] vargs) { ... } showAll(new String{"Box"}); showAll(new String{"Box".. 2022. 9. 12.
[Java] 열거형(Enumeration Type) 열거형(Enum)은 Java 5 에서 추가된 자료형으로 의미가 부여된 이름을 갖는 상수의 선언에 목적이 있다. Java 5 이전의 상수 선언과 문제점 interface Animal { int DOG = 1; int CAT = 2; } 인터페이스 내에 선언된 변수는 public, static, final이 선언된 것으로 간주된다. 이러한 상수의 선언은 큰 문제를 하나 가지고 있다. interface Person { int MAN = 1; int WOMAN = 2; } public static void who(int man) { swtich(man) { ... } } Who(Person.MAN);// 정상적인 호출 who(Animal.DOG);// 비정상적인 호출 => 오류 발생 안함 잘못된 상수를 집어 넣.. 2022. 9. 12.
[Java] 컬렉션 프레임워크 - 컬렉션 기반 알고리즘 정렬 List 인터페이스를 구현한 클래스들은 정렬된 상태로 유지하지 않는다. public static 2022. 9. 12.
[Java] 컬렉션 프레임워크 - Map 인터페이스 Map, SortedMap Map 인터페이스는 Key와 Value가 하나의 쌍을 이루는 형태로 데이터를 저장한다. Key를 사용하여 Value를 저장하므로, Key는 중복될 수 없으나 Key만 다르면 Value는 중복 가능하다. SortedMap 인터페이스는 Map을 상속하는 인터페이스로, Key의 값에 따라 정렬을 유지한다. SortedMap에 사용되는 Key는 반드시 Comparable 인터페이스를 구현하거나 Map 인스턴스 생성단계에서 Comparator 구현 인스턴스를 등록해야한다. Map map = new HashMap(); Set ks = map.keySet(); Map 구현 클래스들은 Key값이 담긴 Set을 반환하는 keySet() 메서드를 사용해 순차적으로 접근한다. 대표적인 클래스들로 .. 2022. 9. 11.
[Java] 컬렉션 프레임워크 - Queue 인터페이스 Queue, Deque Queue 인터페이스는 처리 이전에 여러 데이터를 보관하는데 사용하는 컬렉션이다. 전형적으로 FIFO 방식으로 데이터를 정렬한다. (필수는 아님) Queue의 메서드 add, remove, element는 꺼낼 인스턴스가 없거나 저장 공간이 부족할 때 예외를 발생시키므로 offer, poll, peek 메서드를 사용하는 것이 권장된다. Deque 인터페이스는 Queue를 상속한 인터페이스로 Queue는 단방향으로 삽입, 삭제가 가능하지만 Deque는 양방향으로 삽입, 삭제가 가능하다. Deque 또한 add~, remove~, get~ 는 Queue와 같은 상황에서 예외를 발생시키므로 offer~, poll~, peek~ 메서드를 사용하는 것이 권장된다. LinkedList Que.. 2022. 9. 10.
[Java] 컬렉션 프레임워크 - Set 인터페이스 Set, SortedSet Set 인터페이스는 집합의 특성을 가지는 인터페이스이다. Set 인터페이스를 구현하는 클래스들은 저장 순서가 유지되지 않고 데이터의 중복 저장을 허용하지 않는 공통적인 특성이 있다. SortedSet 인터페이스는 Set을 상속한 인터페이스로 원소들이 정렬되어있는 Set이다. HashSet 가장 기본적인 Set의 구현 클래스로, 저장 순서가 유지되지 않고 데이터의 중복 저장이 허용되지 않는다. hash에 의해 데이터 위치를 특정시켜 해당 데이터를 빠르게 색인할 수 있어 삽입, 삭제, 색인이 매우 빠른 컬렉션 중 하나이다. 중복 저장을 허용하지 않다는 것은 내부적으로 동일한 데이터를 판단하는 기준이 있다는 것이다. HashSet의 경우는 Object 클래스의 equals 메서드와 .. 2022. 9. 10.
[Java] 컬렉션 프레임워크 - 컬렉션 프레임워크의 개념과 List 인터페이스 컬렉션 프레임워크란 자료구조와 알고리즘을 제네릭 기반의 클래스와 메서드로 미리 구현해 놓은 프레임워크이다. 컬렉션 프레임워크의 구조 컬렉션 프레임워크는 크게 4가지 인터페이스로 구현되어있다. List, Set, Queue, Map 이다. List, Set, Queue 는 Collection 인터페이스를 상속하며, Map은 구조상의 차이로 인해 Collection 인터페이스를 상속하지 않는다. 다음은 인터페이스에 대한 간략한 정의이다. Collection : the root of the collection hierarchy. List : an ordered collection . Set : a collection that cannot contain duplicate elements. Queue : a co.. 2022. 9. 9.
[Java] 제네릭(Generic) 제네릭(Generic) class Box { private T ob; public void set(T o) { ob = o; } public T get() { return ob; } } Box aBox = new Box(); 제너릭이란 한 가지 데이터 타입에 의존적이지 않도록, 타입을 내부적으로 지정하는 것이 아닌 외부에서 사용자에 의해 지정되는 것을 의미한다. 위 코드는 제너릭을 사용해 정의된 클래스이다. Box 클래스에서 사용된 T를 타입 매개변수(Type Parameter), Box 에서 타입 매개변수에 전달된 Apple 클래스를 타입 인자(Type Argument), Box이라는 새로운 타입을 매개변수화 타입(Parameterized Type) 또는 제너릭 타입(Generic Type) 이라고 한.. 2022. 9. 8.