랑아
article thumbnail
Java 심화 - 6
Java 2023. 4. 16. 17:10

Java 심화 자바 가상 머신(Java Virtual Machine) JVM은 자바 프로그램을 실행시키는 도구이다. 즉, JVM은 자바로 작성한 소스 코드를 해석해 실행하는 별도의 프로그램이다. 자바는 운영체제로부터 독립적이고, 자바의 독립성은 JVM을 통해 구현되는데, 이유는 다음과 같다. 먼저 프로그램이 실행되기 위해서는 CPU, 메모리, 각종 입출력 장치 등과 같은 컴퓨터 자원을 프로그램이 할당받아야 한다. 프로그램이 자신이 필요한 컴퓨터 자원을 운영체제에게 주문하면, 운영체제는 가용한 자원을 확인한 다음, 프로그램이 실행되는 데에 필요한 컴퓨터 자원을 프로그램에게 할당해준다. 이 때, 프로그램이 운영체제에게 필요한 컴퓨터 자원을 요청하는 방식이 운영체제마다 다르다. 이것이 프로그래밍 언어가 운영체..

article thumbnail
Java 심화 - 5
Java 2023. 4. 16. 17:08

Java 심화 스레드(Thread) 애플리케이션이 실행되면 운영체제가 해당 애플리케이션에게 메모리를 할당해주며 애플리케이션이 실행되는데, 이처럼 실행 중인 애플리케이션을 프로세스라고 하며, 프로세스 내에서 실행되는 소스 코드의 실행 흐름을 스레드라고 한다. 단 하나의 스레드를 가지는 프로세스를 싱글 스레드 프로세스, 여러 개의 스레드를 가지는 프로세스를 멀티 스레드 프로세스라고 한다. 프로세스는 데이터, 컴퓨터 자원, 스레드로 구성되며, 스레드는 데이터와 애플리케이션이 확보한 자원을 활용하여 소스 코드를 실행한다. 메인 스레드(Main thread) 자바 애플리케이션을 실행하면 가장 먼저 실행되는 메서드는 main 메서드이며, 메인 스레드가 main 메서드를 실행시켜준다. 메인 스레드는 main 메서드의..

article thumbnail
Java 심화 - 4
Java 2023. 4. 16. 17:04

Java 심화 파일 입출력(I/O) InputStream, OutputStream 자바에서는 입출력을 다루기 위한 InputStream, OutputStream을 제공한다. 스트림은 단방향으로만 데이터를 전송할 수 있기에, 입력과 출력을 동시에 처리하기 위해서는 각각의 스트림이 필요하다. 입출력 스트림은 어떤 대상을 다루느냐에 따라 종류가 나뉘며, File을 다룰 때는 FileInputStream / FileOutputStream을 사용하고, 프로세스를 다룰 때는 PipedInputStream / PipedOutputStream을 사용한다. FileInputStream 터미널을 이용한 파일 생성 code라는 문자열이 입력된 codestates.txt 라는 이름의 파일을 생성 echo code >> cod..

article thumbnail
Java 심화 - 3
Java 2023. 4. 16. 17:02

Java 심화 스트림(Stream) 배열, 컬렉션의 저장 요소를 하나씩 참조해서 람다식으로 처리할 수 있도록 해주는 반복자이다. 스트림을 사용하면 List, Set, Map, 배열 등 다양한 데이터 소스로부터 스트림을 만들 수 있고, 이를 표준화된 방법으로 다룰 수 있다. 스트림은 데이터 소스를 다루는 풍부한 메소드를 제공하고 이를 활용하면 다량의 데이터에 복잡한 연산을 수행하면서 가독성과 재사용성이 높은 코드를 작성할 수 있다. 스트림의 특징 스트림 처리 과정은 생성, 중간 연산, 최종 연산 세 단계의 파이프라인으로 구성 스트림은 원본 데이터 소스를 변경하지 않음(read-only) 일회용(onetime-only) 내부 반복자 스트림의 생성 스트림으로 데이터를 처리하기 위해서는 가정 먼저 스트림을 생성..

article thumbnail
Java 심화 - 2
Java 2023. 4. 16. 17:00

Java 심화 람다(Lambda) 함수형 프로그래밍 기법을 지원하는 자바의 문법 요소이다. 메서드를 하나의 '식(expression_'으로 표현한 것으로 코드를 매우 간결하면서 명확하게 표현할 수 있다는 큰 장점이 있다. 자바는 JDK 1.8 이후 람다식 등 함수형 프로그래밍 문법 요소를 도입하며 기존의 객체지향 프로그래밍과 함수형 프로그래밍을 혼합하는 방식으로 보다 효율적인 프로그래밍을 할 수 있게 되었다. 람다식의 기본 문법 기본적으로 반환타입과 이름을 생략 가능 익명 함수(annonymous function)라 부르기도 함 메서드 바디에 문장이 실행문이 하나만 존재할 때 중괄호와 return문을 생략 가능하며 이 경우 세미콜론까지 생략해야 함 매개변수 타입을 함수형 인터페이스를 통해 ..

article thumbnail
Java 심화 - 1
Java 2023. 4. 16. 16:58

Java 심화(Effective) 애너테이션(Annotation) 애너테이션이란 소스 코드가 컴파일되거나 실행될 때에 컴파일러 및 다른 프로그램에게 필요한 정보를 전달해주는 문법 요소이다. @로 시작하며 클래스, 인터페이스, 필트, 메서드 등에 붙여서 사용할 수 있다. 애너테이션은 java.lang.annotation 인터페이스를 상속받기 때문에 다른 클래스나 인터페이스를 상속받을 수 없다. 에너테이션의 종류 JDK에서 기본적으로 제공하는 애너테이션 표준 애너테이션 : JDK에 내장되어 있는 일반적인 애너테이션 메타 애너테이션 : 다른 애너테이션을 정의할 때 사용하는 애너테이션 표준 애너테이션 @Override 메서드 앞에만 붙일 수 있는 애너테이션 선언한 메서드가 상위 클래스의 메서드를 오버라이딩하거나..

article thumbnail
Java 컬렉션 - 2
Java 2023. 4. 16. 16:55

Java 컬렉션 Java의 컬렉션 프레임워크 컬렉션 프레임워크 여러 데이터들을 그룹으로 묶어놓은 것을 컬렉션이라 하며 컬렉션 크레임워크는 컬렉션을 다루는데 편리한 메서드를 미리 정의한 것 특정 자료 구조에 데이터를 추가, 삭제, 수정, 검색 등의 동작을 수행하는 편리한 메서드들을 제공 주요 인터페이스로 List, Set, Map을 제공 List 데이터의 순서가 유지되며 중복 저장이 가능한 컬렉션을 구현할 때 사용 ArrayList, Vector, Stack, LinkedList등이 List 인터페이스를 구현 Set 데이터의 순서가 유지되지 않으며, 중복 저장이 불가능한 컬렉션을 구현할 때 사용 HashSet, TreeSet 등이 Set 인터페이스를 구현 Map 키(key)와 값(value)의 쌍으로 데이..

article thumbnail
Java 컬렉션 - 1
Java 2023. 4. 16. 16:43

Java 컬렉션 Java 열거형 열거형 여러 상수들을 보다 편리하게 선언할 수 있도록 만들어진 자바의 문법 요소이다. 상수명의 중복을 피하고 타입에 대한 안정성을 보장한다. 간결하고 가독성이 좋은 코드를 작성할 수 있으며 switch문에서 작동이 가능하다. 열거형의 사용 방법 대소문자 모두 사용 가능하지만 관례적으로 대문자를 사용 값을 따로 지정하지 않아도 자동적으로 0부터 시작하는 정수값이 할당 enum 열거형이름 {상수명1, 상수명2, 상수명3, ...} // 열거형 사용 예시 enum Numbering { FIRST, SECOND, THIRD } public class Main { public static void main(String[] args) { Numbering num = Numbering..