Language
-
[JAVA] 정렬 메소드 sort() / Comparable / ComparatorLanguage/Java 2020. 7. 4. 16:56
오늘은 자바에서의 자료구조의 정렬 메소드인 sort() 대해 정리하려고 합니다. 1. Arrays.sort() java.util.Arrays 클래스에 포함되어있는 sort() 메소드를 이용해 배열을 정렬하는 것이 가능합니다. Primitive타입 배열 public static void sort(primitive type array arr) primitive 타입의 배열을 인자로 받아 오름차순 정렬 public static void sort(primitive type array arr, int fromIndex, int toIndex) primitive 타입의 배열, 시작 인덱스, 끝 인덱스를 인자로 받아 주어진 배열의 시작 인덱스부터 끝 인덱스까지의 데이터를 오름차순 정렬 primitive타입의 배열을 ..
-
[Java] Java의 컬렉션 프레임워크Language/Java 2020. 4. 19. 16:21
오늘은 컬렉션 프레임워크에 대해 알아보겠습니다. 코딩을 하다 보면 코드상에서 데이터를 어딘가에 담아 사용할 일이 아주 많습니다. 자바에서는 이 역할을 Collections와 Map 등의 인터페이스가 하게 됩니다. 그렇다면 우리가 자주 사용하는 컬렉션 프레임워크의 종류와 역할에 대해 알아보도록 하겠습니다. 1. List 순서가 있는 데이터의 집합, 데이터의 중복을 허용하는 자료구조입니다. 데이터를 넣으면 순차적으로 데이터가 들어갑니다. Array / ArrayList / LinkedList의 차이 흔히 알고 있는 Array 배열은 생성 시 그 크기를 정해주고 변경할 수 없다는 치명적인 단점이 있습니다. 뿐만 아니라 중간에 데이터를 끼워 넣을 수 없고(덮어써 짐), 중간의 데이터를 지우는 경우 중간이 비어있..
-
[JAVA] Enum이란?Language/Java 2020. 3. 15. 15:41
Enum class란? Enum class는 '서로 연관된 상수들의 집합'으로 기존에 사용하던 상수 정의 방법인 final static string을 사용할 때 발생할 수 있는 여러 문제점을 보완하기 위한 클래스 타입입니다. Enum을 사용하는 것의 장점은 다음과 같습니다. 1. 코드의 가독성이 좋다. 2. 개발자가 의도하지 않은 값이 할당되는 것을 방지한다. (컴파일 단계에서 체크 가능) 간략한 예시 코드를 가져와 봤습니다. public class State { public static final int START = 0; public static final int STOP = 1; public static final int WAIT = 2; private final int _stateCode; pub..
-
[JAVA] ReflectionLanguage/Java 2020. 2. 1. 22:33
자바의 특별한 기능 중 하나인 Reflection에 대해 알아보겠습니다. Reflection이란? 리플렉션은 이미 로딩이 완료된 클래스에서 또 다른 클래스를 동적으로 로딩하여 생성자, 멤버 변수, 멤버 메소드 등을 사용할 수 있도록 하는 기능입니다. 즉, 컴파일된 코드에서 역으로 클래스의 정보를 불러올 수 있고, 디컴파일 시에도 사용되는 기법입니다. 사용법 클래스 정보 가져오기 Class myClass = Class.forName("클래스 이름"); 위 코드와 같이 forName() 메소드에 정보를 추출하고자 하는 클래스 이름을 파라미터로 넘겨 호출합니다. 이제 이 클래스를 가지고 클래스 내부의 다양한 정보를 추출해낼 수 있습니다. Class myClass = Class.forName("클래스"); //..
-
[JAVA] Generic TypeLanguage/Java 2020. 2. 1. 13:08
오늘은 제네릭 타입에 대해 알아보겠습니다. Generic Type? 제네릭 타입은 클래스나 메소드를 작성할 때, 사용할 객체 타입을 지정할 수 있도록 하는 기능입니다. 지정할 타입을 꺾쇠()로 감싸 표현해, 해당 데이터 타입만을 사용하도록 타입을 제한할 수 있습니다. 이러한 제네릭 타입을 사용하는 이유는 무엇일까요? - 컴파일 시 에러 체크 가능 타입이 일치하지 않는 에러가 컴파일 단계에서 검출되지 않는 경우가 종종 발생합니다. 제네릭 타입을 사용하면 타입이 일치하지 않는 경우 실행 단계 이전인 컴파일 단계에서 타입 에러를 감지할 수 있습니다. - 불필요한 타입 변환 생략 가능 구체적인 타입을 지정해, 불필요하게 타입을 변환하는 과정을 생략할 수 있습니다. List list = new ArrayList(..
-
[JAVA] Reader/WriterLanguage/Java 2019. 12. 7. 21:38
지난 포스팅에서 바이트 단위로 입출력이 이루어지는 InputStream/OutputStream에 대해 정리했습니다. 오늘은 문자 단위로 입출력이 이루어지는 Reader/Writer에 대해 정리해보겠습니다. Reader와 Writer는 문자(Character) 단위 입출력의 최상의 클래스입니다. 추상 클래스인 이 Reader와 Writer클래스를 상속받은 후손들을 이용해 사용할 수 있습니다. 문자를 단위로 즉, 2byte 문자나 문자열을 읽고 쓰기 위해 입출력이 이루어진다는 사실을 제외하고는 앞선 포스팅의 InputStream/OutputStream과 크게 다른 것이 없습니다. InputStreamReader/OutputStreamWriter 앞서 InputStream/OutputStream은 byte단위..
-
[JAVA] InputStream/OutputStreamLanguage/Java 2019. 12. 7. 15:31
오늘은 자바의 입출력에 관한 내용을 정리해 보려고 합니다. 입출력 즉, I/O란 프로그램이 프로그램 외부와 데이터를 주고받는 것을 의미합니다. 자바에서는 이러한 입출력 동작을 위해 java.io 패키지를 통해 다양한 클래스를 제공합니다. 이번 포스팅에서는 InputStream/OutputStream과 그 하위 클래스들에 대해 정리해보겠습니다. Stream 우선 Stream이라는 용어에 대해 알아보겠습니다. 입출력을 위해 어느 한쪽과 다른 한쪽이 데이터를 주고받기 위해서는 데이터를 전송할 수 있는 통로가 필요합니다. 이 통로 역할을 하는 것을 Stream이라고 하는데요. Stream은 하나의 방향으로, 순차적으로 전송이 이루어집니다. InputStream/OutputStream InputStream과 Ou..
-
[JAVA] Thread와 Multi ThreadLanguage/Java 2019. 11. 12. 20:50
Thread란? 우리가 프로그램을 작성하고 이 프로그램을 실행하면 그 '실행된 프로그램'을 프로세스라고 합니다. 그리고 프로세스 내부에 실제로 작업을 수행하고 처리하는 더 작은 단위를 스레드(Thread)라고 하는데요. 하나의 프로세스에는 하나 이상의 스레드가 존재합니다. 스레드가 하나인 경우에는 프로그램 내의 모든 작업을 순차적으로 수행하지만, 스레드가 여러 개인 경우 각각의 스레드는 서로 다른 일을 동시에 수행할 수 있습니다. 이는 멀티프로그래밍과는 다른 개념으로 멀티 프로그램은 여러 개의 프로세스가 동시에 돌아가는 것이지만, 멀티 스레드는 하나의 프로세스 내에서 이루어지는 작업입니다. 멀티프로그래밍의경우 각각의 프로세스 간의 동기화가 어렵다는 문제가 있습니다. 하지만 스레드는 서로 간에 생성한 인스..