[Java 기능] 바이트 단위 입출력 스트림
·
Java & Kotlin
InputStream 바이트 단위 입력 스트림의 최상위 추상 클래스 많은 추상 메서드가 선언되어 있고, 이를 하위 스트림에서 상속받아 구현 주요 하위 클래스 스트림 클래스 설명 FileInputStream 파일에서 바이트 단위로 자료를 읽음 ByteArrayInputStream byte 배열 메모리에서 바이트 단위로 자료를 읽음 FilterInputStream 보조 스트림의 최상위 클래스 주요 메서드 메서드 설명 int read() 입력 스트림으로부터 한 바이트의 자료를 읽음. 읽은 자료의 바이트 수 반환 int read(byte[] b) 입력 스트림으로부터 b[] 크기의 자료를 b[]에 읽음. 읽은 자료의 바이트 수 반환 int read(byte b[], int off, int len) 입력 스트림으로..
[Java 기능] 표준 입출력 스트림
·
Java & Kotlin
System 클래스의 표준 입출력 멤버 public class System { public static PrintStream out; public static InputStream in; public static PrintStream err; } System.out : 표준 출력(모니터) 스트림 System.in : 표준 입력(키보드) 스트림 System.err : 표준 에러 출력(모니터) 스트림 예제 코드 문자를 입력받아 출력하는 코드 SystemInTest1.java package ch13; import java.io.IOException; public class SystemInTest { public static void main(String[] args) { System.out.println("알..
[Java 기능] I/O 스트림
·
Java & Kotlin
입출력 스트림 입출력은 디바이스에 dependent 함 → 디바이스에 따라 다른 코드를 사용해야할 수 있음 이를 추상화하여 디바이스에 독립적으로 일관성 있는 입출력을 제공하도록 하는 것이 입출력 스트림 여기서 스트림은 추상적인 경로 입출력 구현되는 곳 : 파일 디스크, 키보드, 마우스, 네트워크, 메모리 등.. 자바는 입출력이 이루어지는 모든 곳에서 스트림을 사용함 입출력 스트림의 구분 대상 기준 : 입력 스트림 / 출력 스트림 (입출력 스트림은 함께 존재할 수 없음) 자료의 종류 : 바이트 스트림 / 문자 스트림 기능 : 기반 스트림 / 보조 스트림 입력 스트림과 출력 스트림 입력 스트림 : 대상으로부터 자료를 읽어 들이는 스트림 출력 스트림 : 대상으로 자료를 출력하는 스트림 종류 종류 예시 입력 스..
[Java 기능] 오류 로그 남기기 - java.util.logging.Logger 활용
·
Java & Kotlin
logging 시스템 운영에 대한 기록 버그 상황을 재현하기 힘들기 때문에 오류가 발생했을 때 기록을 남겨 디버깅을 용이하게 함 로그 파일에 기록하는 코드를 추가하여 필요한 정보가 로그로 남을 수 있도록 함 로그를 얼마나 남길 것인가 → 회사마다 정책이 있음 로그가 너무 적으면? 정확한 시스템의 상황을 파악하기 어려움 로그가 너무 많으면? 빈번한 file I/O의 오버헤드와 로그 파일의 백업 문제 등이 발생할 수 있음 java.util.logging 자바에서 기본적으로 제공되는 log 패키지 파일이나 콘솔에 로그 내용을 출력할 수 있음 jre/lib/logging/properties 파일에서 로그의 출력 방식 로그 레벨을 변경할 수 있음 (기본 레벨 : info) logging 패키지에서 제공하는 로그 ..
[Java 기능] 사용자 정의 예외 클래스
·
Java & Kotlin
사용자 정의 예외 클래스 자바에서 제공되는 예외 클래스 이외에 프로그래머가 직접 생성해야 하는 예외가 있을 수 있음 기존 예외 클래스 중 가장 유사한 예외 클래스에서 상속 받음 기본적으로 Exception 클래스를 상속하여 만들 수 있음 예제 코드 패스워드 입력 시 오류 처리 비밀번호는 null이 될 수 없음 비밀번호는 문자로만 구성될 수 없음 (숫자 혹은 특수문자 포함) 비밀번호는 5자 이상이어야 함 PasswordException.java package ch10; public class PasswordException extends Exception {// Exception을 상속받는 사용자 정의 예외 클래스 public PasswordException(String message) { super(me..
[Java 기능] 예외 처리와 미루기
·
Java & Kotlin
try-catch문 try { /* 예외가 발생할 수 있는 코드 */ } catch(처리할 예외 타입 e) { /* try 블록 안에서 예외 발생 시 예외 처리 코드 */ } catch문이 수행되면 이후 수행문 또한 실행됨 (시스템 종료 x) catch문에서 로그를 남기는 것이 좋음 ArrayIndexException.java 배열의 인덱스 범위 초과 시 오류 처리 (runtime 오류) package ch08; public class ArrayIndexException { public static void main(String[] args) { int[] arr = {1,2,3,4,5}; try { for( int i = 0; i
[Java 기능] 예외 처리의 개념과 필요성
·
Java & Kotlin
프로그램에서 오류 컴파일 오류(compile error) : 프로그램 코드 작성 중 발생하는 문법적 오류 최근에는 개발 환경(eclipse, IntelliJ ...)에서 대부분의 컴파일 오류는 detection 됨 실행 오류(runtime error) : 실행 죽인 프로그램이 의도하지 않은 동작(bug)을 하거나 프로그래밍 중지되는 오류 비정상 종료(aborted)가 되는 경우 시스템의 심각한 장애를 초래할 수 있음 예외 처리 중요성 프로그램의 비정상 종료를 방지하여 시스템이 원활하게 실행되도록 함 bug는 발생할 수 밖에 없고, 실행 오류 발생 시 오류의 과정을 재현하는 것은 현실적으로 힘듦 오류 발생 시 log를 남겨 추후 log 분석을 통해 그 원인을 파악하여 bug를 수정하는 것이 중요 웹 프로그..
[Java 기능] 스트림 활용
·
Java & Kotlin
문제 여행사에 패키지 여행 상품이 있습니다. 여행 비용은 15세 이상은 100만원, 그 미만은 50만원 입니다. 고객 세 명이 패키지 여행을 떠난다고 했을 때 비용 계산과 고객 명단 검색등에 대한 연산을 스트림을 활용하여 구현해 봅니다. 고객에 대한 클래스를 만들고 ArrayList로 고객을 관리 합니다. 고객 정보는 다음과 같습니다. CustomerLee 이름 : 이순신 나이 : 40 비용 : 100 CustomerKim 이름 : 김유신 나이 : 20 비용 : 100 CustomerHong 이름 : 홍길동 나이 :13 비용 : 50 Customer.java package ch07; public class Customer { private String name; private int age; privat..
[Java 기능] reduce() 연산
·
Java & Kotlin
reduce() 연산 정의된 연산이 아닌 프로그래머가 직접 구현한 연산 최종 연산으로 스트림의 요소를 소모하며 연산을 수행 reduce() 메서드의 두번째 요소로 전달되는 람다식에 따라 다양한 기능을 할 수 있음 람다식을 직접 구현하거나 람다식이 긴 경우 BinaryOperator를 구현한 클래스를 사용함 배열의 모든 요소 합을 더하는 reduce() 연산 구현 예 Arrays.stream(arr).reduce(0, (a, b) -> a + b);// 매개변수 초기값, 람다식 예제 코드 ReduceTest.java package ch06; import java.util.Arrays; import java.util.function.BinaryOperator; class CompareString implem..