Java 관련/Java

    [Java] 쓰레드(Thread)

    [Java] 쓰레드(Thread)

    프로그램(program)이란? 프로그램(program)이란 실행 파일을 의미합니다. ​ 프로세스(process)란? 프로세스(process)란 실행 중인 프로그램(program)이라고 할 수 있습니다. 사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행 중인 것을 말합니다. 프로세스는 프로그램에 사용되는 데이터, 메모리와 같은 자원 그리고 쓰레드로 구성됩니다. ​ 쓰레드(thread)란? 쓰레드(thread)란 프로세스(process) 내에서 실제로 작업을 수행하는 작업 단위를 의미합니다. 모든 프로세스에는 한 개 이상의 쓰레드가 존재하여 작업을 수행합니다. 또한, 두 개 이상의 쓰레드를 가지는 프로세스를 멀티스레드 프로세스(multi-threaded process)라고 합니다. ​ ..

    [Java] 입출력(IO - InputOutput)

    [Java] 입출력(IO - InputOutput)

    package com.test01; import java.io.File; import java.io.IOException; public class MTest01 { public static void main(String[] args) { // C에 test_io라는 폴더 생성 File fi = new File("C:/test_io"); // test_io폴더가 있으면 exists출력 없으면 make directory출력 하고 폴더 생성 if (fi.exists()) { System.out.println("exists"); } else { System.out.println("make directory"); fi.mkdirs(); } // fi 안에 (밑에) AA라는 folder(directory) 생성 F..

    [Java] 예외 처리(Exception)

    [Java] 예외 처리(Exception)

    오류(error)와 예외(exception) 소스코드를 작성할 때 문법상 오류가 날 경우 컴파일 자체가 되지 않으며 에러를 발생시킵니다. 문법에 맞지 않은 코드를 컴파일하려고 하면 컴파일러는 문법 오류(syntax error)를 발생시킵니다. 또한 문법상 오류는 없지만 프로그램이 실행되면서 발생하는 오류가 있습니다. 이와 같이 컴퓨터에서 시스템이 동작하면서 예상치 못한 사태가 발생하여 프로그램이 영향받는 것을 오류와 예외로 구분할 수 있습니다. 오류(error)는 시스템에서 프로그램에 문제를 발생시키며 실행 중인 프로그램을 종료시킵니다. 이러한 오류는 예측하여 처리할 수 없는 것이 대부분입니다. 하지만 예외(exception)는 오류와 마찬가지로 프로그램을 비정상적으로 종료시키지만 발생할 수 있는 상황을..

    [Java] Comparable & Comparator

    [Java] Comparable & Comparator

    Comparable Comparable 인터페이스는 객체를 비교하여 정렬하는 데 사용되는 메소드인 compareTo() 메소드를 정의하고 있습니다. 비교 클래스인 compareTo()메소드는 Comparable 내부에 존재합니다. 자바에서 같은 타입의 인스턴스를 서로 비교해야만 하는 클래스들은 모두 Comparable 인터페이스를 구현하고 있습니다. 따라서 Boolean을 제외한 래퍼 클래스나 String, Time, Date와 같은 클래스의 인스턴스는 모두 정렬 가능합니다. 이때 기본 정렬 순서는 작은 값에서 큰 값으로 정렬되는 오름차순이 됩니다. ​ ​ Score.java package com.compare; public class Score implements Comparable{ private S..

    [Java] 이터레이터(iterator)

    [Java] 이터레이터(iterator)

    Iterator 컬렉션 프레임워크는 컬렉션에 저장된 값을 읽어오는 방법은 Iterator 인터페이스로 표준화하고 있습니다. Collection 인터페이스에서는 Iterator 인터페이스를 구현한 클래스의 인스턴스를 반환하는 iterator() 메소드를 정의하여 각 요소에 접근하도록 하고 있습니다. 따라서 Collection 인터페이스를 상속받는 List와 Set 인터페이스에서도 iterator() 메소드를 사용할 수 있습니다. interator는 String()에서 봤던 Tokenizer와 비슷한 개념이라고 할 수 있습니다. ​ package com.test04; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedLis..

    [Java] Map Collection(맵)

    [Java] Map Collection(맵)

    Map 컬렉션 클래스 컬렉션에서 List와 Set은 Collection을 상속받고 있지만 Map은 Collection을 상속받고 있지 않고 다른 저장 방식을 가지고 있습니다. 엄밀히 말하면 Collection이 아니지만 일반적으로 List와 Set과 같이 컬렉션으로 구분합니다. Map은 Key와 Value를 하나의 쌍으로 저장하는 방식(key-value 방식)을 사용합니다. 여기서 키(key)는 실질적인 값(value)을 찾기 위한 이름의 역할을 합니다. 또한 맵은 값의 순서가 없으며 키는 중복을 허용하지 않지만 벨류는 중복을 허용합니다. 1. 저장 순서X 2. Key는 중복 허용X 3. Value는 중복 허용 ​ Map을 상속받고 있는 대표적인 컬렉션 클래스 1. HashMap 2. Hashtable ..

    [Java] Set Collection(셋 컬렉션)

    [Java] Set Collection(셋 컬렉션)

    Set 컬렉션 클래스 Set은 HashSet과 TreeSet이 상속받고 있습니다. 또한 List와 함께 Collection을 상속받고 있지만 List와는 다르게 저장된 값이 순서가 없으며 중복을 허용하지 않습니다. 1. 값의 저장 순서X 2. 값의 중복 저장X ​ Set을 상속받고 있는 컬렉션 1. HashSet 2. TreeSet HashSet 클래스 HashSet은 Set 컬렉션 클래스에서 가장 일반적으로 사용되고 있으며 해시 알고리즘을 사용하여 속도가 매우 빠릅니다. 이러한 HashSet 클래스는 내부적으로 HashMap 인스턴스를 이용하여 값을 저장합니다. HashSet는 Set을 상속받고 있으므로 값의 순서가 없고 중복을 허용하지 않습니다. package com.test03; import jav..

    [Java] List Collection(리스트 컬렉션)

    [Java] List Collection(리스트 컬렉션)

    List(리스트)도 Collection(컬렉션)을 상속받고 있습니다. 이전 포스팅에서 보았던 Vector(백터)의 경우 컬렉션을 상속받고 있는 리스트를 상속받고 있습니다. 백터가 값의 순서가 있으며 중복을 허용했었던 것처럼 리스트도 값의 순서가 있고 중복을 허용하고 있습니다. ​ 또한 대표적인 List를 상속받고 있는 컬렉션 클래스는 다음과 같습니다. 1. ArrayList 2. LinkedList 3. Vector 4. Stack ​ 리스트를 상속받고 있는 모든 컬렉션 클래스는 값의 저장 순서가 유지되며 중복을 허용합니다. ​ 일반적으로 위 4개의 컬렉션 중 ArrayList를 가장 많이 쓰고 지난번 포스팅에서 백터를 보았기 때문에 ArrayList를 알아보고 LinkedList 컬렉션을 간단하게 알아..

    [Java] 백터(Vector) & 향상된 for문(foreach)

    [Java] 백터(Vector) & 향상된 for문(foreach)

    백터(Vector)는 Collection을 상속받고 있는 List를 상속받고 있습니다. 그림과 같은 형태를 가지고 있습니다. 또한 백터는 리스트를 상속받고 있으므로 리스트와 같은 속성을 가집니다. 데이터의 순서가 있으며 중복을 허용합니다. List를 알아보기 전에 Vector의 특징은 어떨까요?? ​ Vector v = new Vector(10,5); 우선 백터는 위와 같은 형태로 사용됩니다. Vector(iCa, cpIn)인데요. iCa는 용량(capacity), cpIn만큼 용량 증가라는 의미입니다. 즉 iCa만큼 용량을 만들며 cpln만큼 용량을 증가시킵니다. ​ package com.test01; import java.util.Vector; public class MTest01 { public s..

    [Java] 컬렉션(Collection framework)

    [Java] 컬렉션(Collection framework)

    컬렉션 프레임워크(Collection framework)란? 자바에서 컬렉션 프레임워크(collection framework)는 여러 개의 값을 효과적으로 관리하는 객체를 말합니다. 다수의 데이터를 쉽게 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합입니다. 즉, 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것입니다. 이러한 컬렉션 프레임워크는 자바의 인터페이스(interface)를 사용하여 구현됩니다. ​ 컬렉션 프레임워크 주요 인터페이스 컬렉션 프레임워크에서는 데이터를 저장하는 자료 구조에 따라 다음과 같은 핵심이 되는 주요 인터페이스를 정의하고 있습니다. 1. List 인터페이스 2. Set 인터페이스 3. Map 인터페이스 List와 Set은 ..