java
-
[Algorithm] 백준 알고리즘 1260 (DFS와 BFS)Algorithm 2020. 3. 15. 22:52
java 코드 import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class Main { static int n; static int m; static int v; static int map[][]; static boolean visit[]; public static void main(String[] args) { Scanner sc = new Scanner(System.in); n = sc.nextInt(); m = sc.nextInt(); v = sc.nextInt(); map = new int[n+1][n+1]; visit = new boolean[n+1]; for(int i=0; i
-
[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)라고 하는데요. 하나의 프로세스에는 하나 이상의 스레드가 존재합니다. 스레드가 하나인 경우에는 프로그램 내의 모든 작업을 순차적으로 수행하지만, 스레드가 여러 개인 경우 각각의 스레드는 서로 다른 일을 동시에 수행할 수 있습니다. 이는 멀티프로그래밍과는 다른 개념으로 멀티 프로그램은 여러 개의 프로세스가 동시에 돌아가는 것이지만, 멀티 스레드는 하나의 프로세스 내에서 이루어지는 작업입니다. 멀티프로그래밍의경우 각각의 프로세스 간의 동기화가 어렵다는 문제가 있습니다. 하지만 스레드는 서로 간에 생성한 인스..
-
[JAVA] 다형성(Polymorphism)Language/Java 2019. 11. 9. 21:18
자바에서 다형성이란 같은 이름을 가졌지만 상황에 따라 다른 형태로 해석될 수 있다는 의미입니다. 예를 들어 A 씨는 회사에서는 개발자이고, 집에서는 딸이고, 학원에서는 수강생입니다. 모두 같은 A 씨이지만 각각의 상황에 따라 맡고 있는 역할과 하는 일들이 다릅니다. 이처럼 하나의 객체가 여러 타입을 가질 때, 이를 다형성이라고 합니다. 이러한 다형성은 반드시 상속 관계에서만 성립하는데, 예를 들어 People이라는 클래스를 상속받는 Employee클래스와 Customer클래스가 있습니다. class People{ public void eat(){ // 먹기 } public void breath(){ // 숨쉬기 } ... } class Employee extends People{ public void w..