java
-
어노테이션, 애너테이션(Annotation) - 표준 애너테이션백엔드/자바 2021. 5. 26. 11:25
애너테이션이란? 주석처럼 프로그램에 영향을 미치지 않으면서, 유용한 정보를 제공하는 것. 간단히 말하면 코드 사이에 주석처럼 쓰이며 특별한 의미, 기능을 제공하는 것이다. 애너테이션은 주석처럼 코드 사이에 존재하며, 코드에는 영향을 주지 않는 것이 특징이다. 코드 변경 없이도 다양한 부가적인 정보를 제공하거나 기능을 수행하게 만든다. 표준 애너테이션 애너테이션 설명 @Override 컴파일러에게 오버라이딩하는 메서드라는 것을 알려준다. @Deprecated 앞으로 사용하지 않을 것을 권장하는 대상에 붙인다. @SuppressWarnings 컴파일러의 특정 경고 메시지가 나타나지 않게 해준다. @SafeVarargs 지네릭스 타입의 가변 인자에 사용한다. @FuntionalInterface 함수형 인터페이..
-
열거형(Enum Types)백엔드/자바 2021. 5. 22. 19:48
열거(enum)형이란? 서로 관련된 상수들을 편리하게 선언하기 위한 목적으로 만들어진 것. 미리 정의된 상수들을 모아둔 집합으로 특수한 데이터 유형이다. 열거(enum)형 데이터 선언하는 방법 열거형 데이터를 선언하는 방법은 아주 간단하다. class를 선언하는 것처럼 자료형 선언하고 자료형 이름을 적고 중괄호 { }안에 상수를 적는다. enum을 사용하면 위와 같이 번거롭게 상수 지정을 해야했던 것과 달리 편하게 상수 지정이 가능하다. 열거(enum)형의 조상 - java.lang.Enum Object 클래스와 마찬가지로 열거형도 Enum이라는 클래스가 존재한다. 그래서 Enum 자료형을 사용하면 Enum 조상 클래스가 가진 메서드도 사용이 가능하다. 다음은 Enum 클래스가 가진 메서드다. 메서드 설..
-
지네릭스(Generics) - 지네릭 메서드백엔드/자바 2021. 5. 22. 17:19
이전 지네릭스 관련 포스트에서 타입 매개변수는 사용 제한이 있다고 했다. static 멤버와 같이 쓰여질 때고 또 하나는 일반 클래스에서 사용될 때라고 했다. 이렇게 일반 클래스의 경우 타입 매개변수는 사용할 수 없어 컴파일 에러가 나는 것을 볼 수 있다. 지네릭 클래스라하더라도 static 메서드에선 타입 매개변수도 컴파일 에러가 나는 것을 볼 수 있다. 그럼 위처럼 타입 매개변수를 써준 것은 무엇일까? 이렇게 메서드의 선언부에 지네릭 타입이 선언된 메서드를 지네릭메서드라 한다. 하지만 지네릭 메서드의 는 우리가 아는 타입 매개변수 와는 다르다. 지네릭 메서드 우선 위와 같은 클래스들이 있다고 가정해보자. 이중에서 genericsMethod 클래스를 위와 같이 지네릭 클래스로 변경해보자. 이때 첫번째는..
-
지네릭스(Generics) - 와일드카드백엔드/자바 2021. 5. 21. 13:21
우선 지네릭스에 관해서 이전에 포스팅한 내용이 있다. 2021.05.21 - [백엔드/자바] - 지네릭스(Generics) - 와일드카드, 지네릭 메서드 거기서 예제 코드가 이어진다. 그래서 그 코드가 있어야 아래 내용을 이해할 수 있다. 시작하기 전에 간단히 코드들을 정리하면 다음과 같다. Box 클래스 class Box{ ArrayList list = new ArrayList(); void add(T item){ list.add(item); } T get(int i) { return list.get(i); } ArrayList getList(){ return list; }; @Override public String toString() { return list+""; } } Box를 상속받은 Frui..
-
지네릭스(Generics) - 지네릭 extends, 지네릭의 한계백엔드/자바 2021. 5. 21. 13:13
지네릭스(Generics) - 지네릭 소개, 지네릭 클래스 지네릭스란(Generics)란? 다양한 타입의 객체를 다루는 메서드, 컬렉션에 입력 가능한 객체를 제한하게 하는 기능이다. 좀 더 직관적으로 쓰자면 특정 메서드나 컬렉션에 들어가는 자료형을 제한 sgcomputer.tistory.com 이전에 글에서 지네릭스에 대해서 설명했는데, 예제는 거기서 쭉 이어서 진행하도록 할 예정이다. 제한적인 지네릭 타입 사용 class Box{ ArrayList list = new ArrayList(); void add(T item){ list.add(item); } T get(int i) { return list.get(i); } ArrayList getList(){ return list; }; @Override ..
-
지네릭스(Generics) - 지네릭 소개, 지네릭 클래스백엔드/자바 2021. 5. 21. 11:13
지네릭스란(Generics)란? 다양한 타입의 객체를 다루는 메서드, 컬렉션에 입력 가능한 객체를 제한하게 하는 기능이다. 좀 더 직관적으로 쓰자면 특정 메서드나 컬렉션에 들어가는 자료형을 제한하는 것이다. 지네릭스의 필요성 예를 들어 위와 같이 String 객체만 들어가길 원하는 ArrayList가 있다고 가정해보자. 기존에 잘 모를 때는 지네릭스 없이 위와 같은 형식으로 객체를 생성하고 사용했다. 하지만 이렇게 생성할 경우 코드는 줄지만 반대로 여러가지 문제점 있다. 예를 들어 위와 같은 상황처럼 데이터를 입력받고, 이걸 변수에 저장한 뒤 출력하는 코드를 가정해보자. 컴파일러가 실행(런타임) 전에 확인할 때는 어떠한 오류도 없다. 우선 실행 결과를 보도록 하자. 컴파일러는 문제가 없다고 했지만, 실제..
-
컬렉션 - Collections 클래스와 메서드백엔드/자바 2021. 5. 20. 19:37
Collections란? Arrays가 배열 관련 메서드를 제공하는 것처럼 Collections는 컬렉션과 관련된 메서드를 제공한다. Arrays, Collections, Objects와 같은 클래스들은 모두 Static 메서드를 제공한다. 그래서 객체 생성없이도 편리하게 다양한 기능을 이용할 수 있다. fill(), copy(), sort(), binarySearch() 등 기본 기능이 있으나 Arrays의 클래스의 메서드들과 기능이 동일하다. 동기화 - synchronizedXXX() 과거 Vector, Hashtable와 같은 자료구조 클래스들은 동기화가 처리되어있었다. 그래서 무슨 자료구조를 사용하든 기본적으로 동기화가 되었었다. 하지만 모든 프로그램이 멀티 쓰레드 프로그래밍을 하는 것이 아니다...
-
컬렉션 - Arrays 클래스와 메서드백엔드/자바 2021. 5. 20. 16:56
Arrays 클래스는 배열을 다루는데 유용한 메서드들이 정의되있다. 모든 메서드가 모든 Static으로 별도로 객체를 생성없이도 언제든 사용이 가능하다. 배열의 복사 - copyOf(), copyOfRange() copyOf()는 배열 전체를 복사해서 새로운 배열을 만들어서 반환한다. 반면 copyOfRange()는 지정한 범위만큼 복사를 해서 새로운 배열을 반환한다. 이때 copyOfRange()에 지정된 범위의 끝은 포함하지 않는다. public static void main(String[] args) { int arr [] = {0, 1, 2, 3, 4}; int arr1 [] = Arrays.copyOf(arr, arr.length); // {0, 1, 2, 3, 4} int arr2 [] = A..