Java 124

파일 출력 스트림(바이트 기반) - 11

💡 바이트 기반에 출력 스트림을 활용해서 파일 생성 또는 파일에 데이터를 출력해보자.    시나리오 코드 - 1 package io.file.ch02;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;public class MyFileOutputStream { // 코드에 시작점 public static void main(String[] args) { // 데이터가 존재 String data = "Hello, Java FileOutputStream \n안녕반가워"; // 1. 파일에다가 데이터를 저장 하고 싶다면(바이트 기반) // 자바 8버전 부터 제공 // try-cat..

표준 입출력이란? - 9

자바에서 표준 입출력(Standard Input/Output)은 프로그램과 사용자 간의 기본적인 데이터 교환 방법을 제공합니다. 표준 입출력의 핵심 요소  System.in**System.in**은 자바 프로그램의 표준 입력 스트림입니다. 기본적으로 이 스트림은 키보드 입력을 받습니다. 이는 InputStream 객체로, 바이트 기반의 낮은 수준의 입력 기능을 제공합니다. 일반적으로, 사용자로부터 텍스트를 읽기 위해 Scanner 클래스나 **BufferedReader**와 같은 더 높은 수준의 래퍼(wrapper)를 사용하여 쉽게 데이터를 처리할 수 있습니다.System.out**System.out**은 자바 프로그램의 표준 출력 스트림으로, 텍스트 데이터를 콘솔에 출력합니다. 이 스트림은 PrintS..

자바 I/O 개론 - 8

자바 I/O (입출력)는 데이터를 읽고 쓰는 기능을 말하며, 파일, 네트워크, 다른 프로그램 등 다양한 소스와 대상으로부터 데이터를 주고받는 데 사용됩니다. 자바의 I/O 시스템은 크게 네 가지 주요 구성 요소로 나눌 수 있습니다: 바이트 기반 스트림, 문자 기반 스트림, 버퍼링 스트림, 그리고 고수준의 스트림으로 분류할 수 있습니다. 사전 기반 지식💡 Stream 이라는 단어에 대해서 먼저 살펴 보자.스트림(Stream)은 데이터를 순차적으로 처리하는 일련의 연속된 데이터 요소들입니다. 자바에서 스트림은 데이터의 흐름을 읽고 쓰는 데 사용되는 추상적인 개념으로, 입출력 작업을 수행할 때 데이터를 한 곳에서 다른 곳으로 이동시키는 매개체 역할을 합니다.   java.io 패키지 💡 자바 I/O의 스트..

Inner class(중첩 클래스) - 7

학습 목표1. 내부 클래스란? (inner class) 2. 내부 클래스의 종류 1. 내부 클래스란? (inner class)자바에서 내부 클래스(Inner Class)는 한 클래스 내부에 선언된 클래스를 말합니다. 내부 클래스를 선언하게 되면 내부 클래스와 외부 클래스라고 표현할 수 있습니다. 내부 클래스는 보통 외부 클래스와 연관이 있는 경우가 많고 다른 곳에서 거의 사용할 일이 없는 경우에 내부 클래스를 선언해서 활용을 합니다. class OuterClass { private int num = 10; class InnerClass { public void display() { System.out.println("num: " + num); ..

Thread에 wait와 notify(프로듀서-컨슈머패턴) - 6

💡 학습 목표스레드 동기화 이해: synchronized 블록을 사용하여 여러 스레드가 공유 자원에 동시에 액세스하지 않도록 관리합니다. 이는 데이터 일관성과 스레드 안전을 유지하는 핵심 개념입니다.wait()와 notify() 메소드의 사용: 이 두 메소드를 사용하여 스레드 간의 통신을 구현합니다. wait()를 호출하는 스레드는 특정 조건이 충족될 때까지 대기하고, notify()를 사용하여 조건 충족 시 다른 스레드를 깨워 작업을 계속하도록 합니다.프로듀서-컨슈머 패턴: 이 패턴은 멀티스레딩 디자인에서 흔히 사용되는 패턴으로, 한 스레드(프로듀서)가 데이터를 생성하고 다른 스레드(컨슈머)가 이를 소비합니다. 프로듀서와 컨슈머 패턴으로 코딩해보기 package useful.ch06;import ja..

자바 multi-threading 이란 - 5

학습 목표1. 자바에서 멀티 스레딩(Multi-threading)에 대해 알아 보자.2. 멀티 Thread 프로그래밍에서의 동기화란?  1. 자바에서 멀티 스레딩(Multi-threading)에 대해 알아 보자.자바에서 멀티 스레딩(Multi-threading)은 프로그램의 여러 부분이 동시에 실행되도록 하는 기술입니다. 이를 통해 자원의 효율적 사용과 응용 프로그램의 반응성 향상을 달성할 수 있습니다. 멀티 스레딩은 하나의 프로세스 내에서 여러 개의 스레드를 생성하여 각 스레드가 작업을 수행하도록 함으로써 병렬 처리를 가능하게 합니다.정리여러 thread가 동시에 수행되는 프로그래밍, 여러 작업이 동시에 실행되는 효과thread는 각각 자신만의 작업 공간을 가짐 ( call Stack )각 thread..

자바 Thread - 4

💡 학습 목표쓰레드(Thread)란 뭘까?쓰레드를 추가로 만들어서 사용하는 방법을 알아 보자.쓰레드의 실행시 쓰레드 상태라는 개념을 알아 보자.1. 쓰레드(Thread)란 뭘까?Thread 란?process란? 저장되어 있는 프로그램이 실행되면 OS로 부터 메모리를 할당받아 프로세스 상태가 된다.하나의 프로세스는 하나 이상의 thread를 가지게 되고, 실제 작업을 수행하는 단위는 thread이다.    2. 쓰레드를 추가로 만들어서 사용하는 방법을 알아 보자.1. 첫번째 방법은 Thread 클래스 상속하여 만들 수 있습니다. package useful.ch05;/** * 쓰레드를 추가하는 방법 - 상속을 활용할 수 있다. * Thread --> Runnable --> run() */public c..

Exception(예외처리) - 3

1. 예외 처리에 대해서 알아 보자.자바 프로그래밍에서의 예외 처리(Exception Handling)는 프로그램 실행 중 발생할 수 있는 예상치 못한 상황(예외)을 관리하는 방법입니다. 예외 처리를 통해 프로그램의 비정상적인 종료를 막고, 예외 상황을 보다 적절하게 처리하여 프로그램의 안정성과 신뢰성을 높일 수 있습니다.자바에서는 다음과 같은 방법으로 예외를 처리합니다 try { // 예외가 발생할 수 있는 코드} catch (ExceptionType1 e) { // ExceptionType1 예외를 처리하는 코드} catch (ExceptionType2 e) { // ExceptionType2 예외를 처리하는 코드}  try { // 예외가 발생할 수 있는 코드} catch (E..

String, StringBuffer 클래스 - 2

학습 목표1. String 클래스의 대해 알아 보자.2. StringBuffer 클래스에 대해서 알아 보자.3. text block ( java 13 ) 사용 해보기  1. String 클래스의 대해 알아 보자.String 선언하는 두가지 방법 String str1 = "Hello"; String str2 = new String("Hello"); String str3 = new String("Hello");힙 메모리에 인스턴스로 생성되는 경우와 상수 풀(constant pool)에 있는 주소를 참조하는 두 가지 방법힙 메모리는 생성될때마다 다른 주소 값을 가지지만, 상수 풀의 문자열은 모두 같은 주소 값을 가짐String Constant Pool 이란   시나리오 코드 1   package useful;..