JAVA 10

자바 네트워크 입출력(Network IO)

1. 네트워크 입출력이란?네트워크 입출력(Network IO)은 네트워크를 통해 데이터를 송수신하는 작업을 의미한다. 파일 입출력과 달리, 네트워크 환경에서는 클라이언트와 서버 간의 데이터 전송이 필요하며, 다양한 예외 상황이 발생할 가능성이 높다. 자바는 이러한 네트워크 프로그래밍을 쉽게 구현할 수 있도록 다양한 API를 제공한다. 네트워크 입출력 방식은 크게 블로킹(Blocking)과 논블로킹(Non-blocking) 방식으로 구분되며, 사용 목적과 성능 요구사항에 따라 적절한 방식을 선택해야 한다.2. 자바 네트워크 프로그래밍 개요자바에서는 네트워크 프로그래밍을 위해 java.net 패키지와 java.nio.channels 패키지를 제공한다. java.net 패키지는 직관적인 블로킹 방식의 API를..

JAVA 2025.03.07

자바 고급 입출력 (NIO와 직렬화)

1. 기존 IO vs NIO 비교자바에서는 기존 java.io 패키지와 새로운 java.nio 패키지를 이용해 입출력을 처리할 수 있다. 각각의 차이점과 사용처를 이해하면 적절한 방법을 선택하는 데 도움이 된다.비교 항목기존 IO (java.io)NIO (java.nio)데이터 처리 방식스트림(Stream) 기반버퍼(Buffer) 기반입출력 방식블로킹(Blocking) 방식논블로킹(Non-blocking) 방식성능작은 데이터 처리에 적합대량 데이터 처리에 유리주요 클래스InputStream, OutputStream, Reader, WriterByteBuffer, CharBuffer, FileChannel, SocketChannel사용 예시파일 읽기/쓰기, 간단한 콘솔 입력네트워크 서버, 대용량 파일 처리..

JAVA 2025.03.06

자바 입출력(IO) 쉽게 이해하기

1. 자바 입출력이란?입출력(IO, Input/Output)은 프로그램이 외부와 데이터를 주고받는 기능을 의미한다. 자바에서는 다양한 입출력 클래스를 제공하며, 파일, 키보드 입력, 네트워크 등을 통해 데이터를 주고받을 수 있다.2. 입출력 스트림(Stream)의 개념스트림(Stream)은 데이터를 연속적으로 읽거나 쓰는 데 사용된다. 자바의 입출력은 대부분 스트림을 기반으로 동작한다.2.1 스트림의 종류바이트 스트림 (Byte Stream): 바이트 단위로 데이터를 처리 (예: InputStream, OutputStream)문자 스트림 (Character Stream): 문자 단위로 데이터를 처리 (예: Reader, Writer)3. 파일 입출력자바에서는 java.io 패키지를 활용하여 파일을 읽고 ..

JAVA 2025.03.05

[java] 변수의 타입(자료형, data type)

변수의 타입(Data type, 자료형)분류변수의 타입설명숫자intlong정수(integer)를 저장하기 위한 타입* int는 -21억~21억까지만 저장가능하므로 그 이상일 경우 long 사용floatdouble실수(floating-point number)를 저장하기 위한 타입float은 오차없이 7자리, bouble은 15자리문자char문자(character)를 저장하기 위한 타입String여러 가지 문자(문자열)를 저장하기 위한 타입 자바에서 정수는 기본적으로 int, 실수는 기본적으로 double 타입으로 인식하게 된다만약 실수를 float 타입으로 사용하고 싶다면 0.03 -> 0.03f 등 뒤에 f를 붙여주도록 하자

JAVA 2024.05.14

요청 URL 가져오는 메서드들 정리

getContextPath() 프로젝트 path 만 가져옴 -> /pro17 getRequestURI() 프로젝트 path ~ 파일경로도 가져옴 -> /pro17/member/listMembers.do getRequestURL() 전체 경로 가져옴 -> http://localhost:8080/pro17/member/listMembers.do getPathInfo() 요청 URL의 제일 뒷부분 path 가져옴 -> /listMembers.do getRealPath() 서버/로컬PC에 설치된 웹 애플리케이션의 절대경로 가져옴 -> d:\hakwon setvletPath() 파일명 가져옴

JAVA 2023.09.28

[java] Iterator - hasNext()와 next()의 동작

Iterator 인스턴스인 it에서 0. it의 cursor는 초기에 인덱스 0을 가리키고 있음 1. while(it.hasNext())로 cursor가 요소 끝으로 이동할 때까지(=null을 가리켜 false를 반환할 때까지) 반복함 2. 반복문에서 next()가 실행되면 cursor로 가리키고 있던 값을 lastRet 변수가 가리키게 하고 cursor는 다음 요소를 가리킴, 이후 lastRet이 가리키는 값을 반환함 => 간단하게 표현하자면, next()는 현재 값을 출력하고 다음 요소로 이동한다고 볼 수 있다 3. cursor가 it의 size(n이라 하자)와 같은 인덱스 [n]을 가리키게 되면 it.hasNext()는 false를 반환하게 되며 반복문이 종료된다

JAVA 2023.07.08

[JAVA] Math.random() 난수 생성

Math.random() 메서드는 0 이상 1 미만의 double형 숫자를 반환함. (0.0000xxx ~ 0.9999xxx) 원하는 정수 범위의 난수 만들기 랜덤 소수(0~0.999...) 생성 Math.random() *숫자 -> 입력한 숫자보다 작은 무수히 많은 소수가 생성됨 예) Math.random() * 11 (0 이상 11 미만 소수) --> 0.11 * 11 => 1.21 0.385 * 11 => 4.235 0.9382 * 11 => 10.3202 랜덤 정수(0~숫자-1) 생성 (int) Math.random() * 숫자 -> 소수 부분은 자르고 정수 부분만 반환 예) (int) Math.random() * 11 (0~10 사이 정수 반환) --> 0.11 * 11 => 1.21 -> 1 ..

JAVA 2022.11.19

[JAVA] java.util 패키지 - Calendar 클래스

Calendar 클래스 Calendar 클래스는 Date 클래스와 마찬가지로 날짜와 시간을 다루는 클래스이다. Calendar 클래스가 새로 추가되면서 Date 대부분의 메소드는 deprecated 되어 잘 사용하지 않으나, 경우에 따라 Date 의 메소드를 그대로 사용하거나, 혹은 Calendar 클래스와 상호 변환하는 상황이 있다. 추상 클래스이기 때문에 직접 new 하여 객체 생성이 불가하고, Calendar.getInstance() 메소드를 이용하거나 Calendar 클래스를 상속받는 GregorianCalendar 클래스를 이용하여 객체를 생성할 수 있다. Calendar 클래스의 주요 상수 상수 사용방법 설명 static int YEAR Calendar.YEAR 현재 년도 static int ..

JAVA 2022.04.20