🎨 Programming

🎨 Programming/JAVA

[JAVA] 30. 스레드(thread) - 1

# 프로세스(process) 실행중인 프로그램을 뜻합니다. 프로그램을 실행하면 OS로부터 실행에 필요한 자원(메모리)을 할당받아 프로세스가 만들어집니다. # 스레드(Thread) 프로세스(process)의 자원을 이용해서 실제로 작업을 수행하는 것이 스레드입니다. 프로그램을 실행하는 하나의 단위를 말한다. 모든 프로세스에는 한 개 이상의 스레드가 존재하여 작업을 수행합니다.(멀티 스레드) 예를 들어) 게임을 만들때 배경음악을 사용하고 싶다면 멀티스레드를 만들어야한다. 단일 스레드일경우, 음악이 끝나면 게임이 시작하게 된다. # 멀티 스레딩 하나의 프로세스 내에서 여러 스레드가 동시에 작업을 수행하는 것을 말합니다. 실제로는 한 개의 CPU가 한 번에 작업만 수행할 수 있기 때문에 아주 짧은 시간 동안 여..

🎨 Programming/JAVA

[JAVA] 29. 람다 표현식

람다 표현식 메서드를 하나의 식으로 표현한 문법을 의미합니다. ● 문법 (매개변수, ..) -> { 실행문실행문... } ex) int min(int x, int y){ return x x < y ? x : y 람다 표현식을 사용하면 클래스를 작성하고 객체를 생성하지 않아도 메서드를 사용할 수 있습니다. ● 특징 - 매개변수의 타입을 추론할 수 있는 경우에는 타입을 생략할 수 있습니다. - 매개변수가 하나인 경우는 괄호를 생략할 수 있습니다. - 함수의 몸체가 하나의 명령문으로 이루어진 경우에는 중괄호를 생략할 수 있습니다. - 함수의 몸체가 return 문으로만 이루어진 경우에는 중괄호를 생략할 수 있습니다. - return문 대신 표현식을 사용할 수 있으며..

🎨 Programming/JAVA

[JAVA] 28. 중첩 클래스

1. 내부 클래스(inner class) - 클래스 또는 메서드 안에 또 다른 클래스를 만드는 것을 의미합니다. - 내부 클래스는 외부 클래스의 모든 멤버들 자신의 멤버처럼 사용합니다.(private 멤버 접근 가능) - static 내부 클래스를 제외한 내부 클래스는 항상 외부 클래스 객체를 통해서 생성할 수 있습니다. 예시 ) 2. 로컬 클래스(local class) - 메소드안에서 정의된 클래스를 의미합니다. (메소드 안에서만 사용할 수 있음) - 외부클래스의 모든 멤버에 접근 가능합니다.(private 멤버도 접근 가능) - 지역변수는 접근할 수 없지만 final로 선언된 상수는 접근 가능합니다. 예시) 3. static 클래스(static class) - 내부 클래스가 static으로 정의되며,..

🎨 Programming/JAVA

[JAVA] 27. 파일(File)/스트림(stream) 클래스

파일(File) 클래스 입출력 작업 이외에 파일과 디렉터리에 관한 작업을 File 클래스를 통해 처리할 수 있습니다. 예시 1) 예시 2) 예시 3) 스트림(stream) 파일이나 콘솔의 입출력을 직접 다루지 않고, 스트림(stream)이라는 흐름을 통해 다룹니다. 스트림은 실제의 입력이나 출력이 표현된 데이터의 흐름을 의미합니다. 스트림은 운영체제에 의해 생성되는 가상의 연결 고리를 의미하고 중간 매개자 역할을 합니다. ● Java.io 패키지 InputStream 클래스 : 입력 스트림을 다루는 클래스 OutputStream 클래스 : 출력 스트림을 다루는 클래스 System.in : 표준 입력(키보드 입력) -> InputStream 클래스 타입 System.out : 표준출력(화면 출력) -> O..

🎨 Programming/JAVA

[JAVA] 26. 예외(Exception) - 2

Exception 클래스 : 모든 예외의 조상 클래스 1. RuntimeExecption 클래스 주로 프로그래머의 실수에 의해 발생할 수 있는 예외 상황 예) 배열 범위 벗어난 경우, null 참조 변수 호출, 잘못된 형변환, 잘못된 수식계산.. 2. 그 외 Exception 클래스 (환경적인 문제) 주로 외부의 영향으로 발생할 수 있는 예외 상황 예) 파일의 이름이 잘못 호출, 클래스 이름이 잘못된 경우, 입력한 데이터 형식이 잘못된 경우 Exception 객체 이름 = new Exception("메세지"); throw 객체 이름; 예시 1) 자바에서는 throw 키워드를 사용하여 강제로 예외를 발생시킬 수 있습니다. 예시 2) 고의로 예외를 발생한 경우 * 구간 내에서 발생할 때 throw라고 쓴다...

🎨 Programming/JAVA

[JAVA] 25. 예외(Exception) - 1

Exception(예외) 오류(Error) 자바 프로그램을 작성할 때 문법이 맞지 않게 코드를 작성하고 컴파일 할 경우 나오는 상황입니다. 예외(Exeption) 시스템이 동작하는 도중에 예상하지 못한 사태가 발생하여 실행 중인 프로그램이 영향을 받는 것을 의미합니다. ● 예외가 발생하는 원인 - 사용자가 데이터를 잘못 입력하는 경우 - 개발자가 로직이나 계산을 잘못 작성하는 경우 - 하드웨어나 네트워크가 제대로 동작하지 못하는 경우 - 악의적으로 잘못된 연산을 요구하거나 시스템을 공격하는 경우 * 예외처리 try{ 예외 상황이 예상되는 문장; ... }catch(예외 상황에 맞는 클래스1 객체1){ 예외 상황1이 벌어졌을 경우 처리할 문장; ... }catch(예외 상황에 맞는 클래스2 객체2){ 예외..

🎨 Programming/JAVA

[JAVA] 24. Set/Map 컬렉션 클래스 - HashSet / HashMap

Set 인터페이스 : 순서가 없는 데이터 집합으로 데이터의 중복을 허용하지 않습니다. (HashSet, TreeSet) Map 인터페이스 : 키와 값의 한 쌍으로 이루어지는 데이터의 집합으로 순서가 없습니다. 또한, 키는 중복으로 허용하지 않지만, 값은 중복될 수 있습니다. (HashMap, TreeMap, HashTable, Properties) HashSet - 요소의 저장 순서를 유지하지 않습니다. - 같은 요소의 중복 저장을 허용하지 않습니다. - 해시 알고리즘을 사용하기 때문에 검색 속도가 매우 빠릅니다. 해시 : 임의의 크기를 가진 데이터를 고정된 데이터의 크기로 변환시키는 것을 말합니다. 즉시 저장하거나 찾고자 하는 위치를 참조할 수 있으므로 빠른 속도로 처리할 수 있는 장점이 있습니다. 예..

🎨 Programming/JAVA

[JAVA] 23. List 컬렉션 클래스 - Stack / LinkedList

List 인터페이스 : 순서가 있는 데이터들의 집합으로 데이터의 중복을 허용합니다. (Vector, ArrayList, LinkedList, Stack, Queue(Stack의 반대)) Stack(스택) 스택의 구조는 선형 메모리 공간에 데이터를 저장하면서 후입선출(LIFO)의 시멘틱을 따르는 자료구조입니다. 예시 1) 예시 2) LinkedList LinkedList는 데이터를 저장하는 각 노드가 이전 노드와 다음 노드의 상태만 알고 있는 저장 형태입니다. ArrayList와 같이 데이터의 추가, 삭제 시 불필요한 데이터의 복사가 없어 데이터의 추가, 삭제 시에 유리한 반면 데이터의 검색 시에는 처음부터 노드를 순회해야 하기 때문에 성능상 불리합니다. - 단일 연결 리스트 : 요소의 저장과 삭제 작업이..

🎨 Programming/JAVA

[JAVA] 22. List 컬렉션 클래스 - ArrayList

List 인터페이스 : 순서가 있는 데이터들의 집합으로 데이터의 중복을 허용합니다. (Vector, ArrayList, LinkedList, Stack, Queue(Stack의 반대)) ArrayList 클래스 벡터와 동일하게 동적 배열을 사용할 수 있습니다. 자바 표준 배열보다 조금 느릴 수 있지만 배열에서 많은 조작이 필요할 때 유용하게 사용됩니다. (벡터보다는 속도가 빠릅니다.) 데이터 저장 시 기본 데이터 타입으로 만들 수 없기 때문에 래퍼 클래스를 사용해야 합니다. 예시) Iterator 클래스를 통해 컬렉션 프레임워크의 요소들을 탐색할 수 있습니다. 자바의 컬렉션 프레임워크에서 컬렉션이 저장되어 있는 요소들을 탐색하여 읽어오는 방법을 표준화한 클래스입니다. 예시) 문제) [영어 단어장] pri..

🎨 Programming/JAVA

[JAVA] 21. 컬렉션 프레임워크(Collection Framework) - Vector

#컬렉션 프레임워크(collection framework) 여러 가지의 데이터를 메모리에서 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스들의 집합을 의미합니다. ● 컬렉션 프레임워크 주요 인터페이스 1. List 인터페이스 : 순서가 있는 데이터들의 집합으로 데이터의 중복을 허용합니다. (Vector, ArrayList, LinkedList, Stack, Queue(Stack의 반대)) 2. Set 인터페이스 : 순서가 없는 데이터 집합으로 데이터의 중복을 허용하지 않습니다. (HashSet, TreeSet) 3. Map 인터페이스 : 키와 값의 한 쌍으로 이루어지는 데이터의 집합으로 순서가 없습니다. 또한, 키는 중복으로 허용하지 않지만, 값은 중복될 수 있습니다. (HashMap, ..