공부 STUDY

    [JAVA] 보조 스트림(Wrapper 스트림)에 대해 알아보자 |FIilterInputStream, FilterOutputStream

    [JAVA] 보조 스트림(Wrapper 스트림)에 대해 알아보자 |FIilterInputStream, FilterOutputStream

    보조스트림이란? 보조 스트림은 입출력 대상이 되는 파일이나 네트워크에 직접 쓰거나 읽는 기능이 없다. 말 그대로 보조 기능을 추가하는 스트림이다. 여러가지 스트림에 적용할 수 있다. 말 그대로 보조해주는 보조요소이다! 어떤 보조 스트림이 더해지느냐에 따라 스트림 기능이 추가된다. 보조 스트림, Wrapper 스트림 다른 스트림을 감싸고 있다는 의미 | 스스로는 입출력 기능이 없기에 생성자의 매개 변수로 다른 스트림을 받게되면 자신이 감싸고 있는 스트림이 읽거나 쓰는 기능 수행시 보조 기능을 추가한다. FIilterInputStream FilterOutputStream - 보조 스트림의 상위 클래스이다. 모든 보조 스트림은 위 스트림을 상속받는다. 보조 스트림은 자료의 입출력을 직접할 수 없기에 다른 기반..

    [JAVA] 자바 입출력과 스트림 - (4) | 문자 단위 스트림

    Reader 문자 단위로 읽는 스트림 중 최상위 스트림으로 다음 하위 클래스를 주로 사용한다. FileReader 파일에서 문자 단위로 읽는 스트림 클래스 InputStreamReader 바이트 단위로 읽은 자료를 문자로 변환해주는 보조 스트림 클래스 BufferedReader 문자로 읽을때 배열을 제공하여 한꺼번에 읽을 수 있는 기능을 제공해주는 보조 스트림 자료를 읽는 메서드로 int 형을 반환하는 read() 메서드를 제공한다. int read() 파일로부터 한 문자를 읽고, 읽은 문자를 반환 int read(char[] buf) 파일로부터 buf 배열에 문자를 읽음 int read(char[] buf, int off, int len) 파일로부터 buf 배열의 off 위치에 len 개수만큼의 문자를..

    [JAVA] 자바 입출력과 스트림 - (3) | 바이트 단위 스트림 - OutputStream

    [JAVA] 자바 입출력과 스트림 - (3) | 바이트 단위 스트림 - OutputStream

    바이트 단위 스트림 - OutputStream 바이트 단위로 쓰는 스트림 중 최상위 스트림이다. 자료의 출력 대상에 따라 다른 스트림을 제공한다. FIleOutputStream - 바이트 단위로 파일에 자료를 쓴다. ByteArrayOutputStream - 바이트 배열에 바이트 단위로 자료를 쓴다 FilterOutputStream - 기반 스트림에서 자료를 쓸 때 추가 기능을 제공하는 '보조 스트림'의 상위 클래스이다. 사용하는 대표 메서드로는 write() 메서드가 있다. 반환값은 void다. 출력버퍼를 강제로 비워 자료를 출력하는 flush()버퍼와 출력 스트림과 연결된 대상 리소스를 닫는 close() 메서드도 있다. FileOutputStream 파일에 바이트 단위의 자료를 출력하기 위햐 가장 ..

    [JAVA] 자바 입출력과 스트림 - (2) | 바이트 단위 스트림 - InputStream

    [JAVA] 자바 입출력과 스트림 - (2) | 바이트 단위 스트림 - InputStream

    바이트 단위 스트림 1) InputStream 바이트 단위로 읽는 스트림 중 최상위 스트림이다. InputStream은 추상 메서드를 포함한 추상 클래스로서 하위 스트림 클래스가 상속받아 각 클래서 역할에 맞게 추상 메서드의 기능을 구현한다. 그렇다면 주로 사용하는 하위 클래스 종류를 알아보자. FileInputStream - 파일에서 바이트 단위로 자료를 읽는다. ByteArrayInputStream - 바이트 배열 메모리에서 바이트 단위로 자료를 읽는다. FilterInputStream - 기반 스트림에서 자료를 읽을 때 추가 기능을 제공하는 '보조 스트림'의 상위 클래스이다. InutStream은 바이트 자료를 읽기 위해 int형을 반환하는 read()메서드를 제공한다. 한 바이트를 읽는데 왜 반환..

    [JAVA] 자바 입출력과 스트림 - (1) | scanner 클래스와 Console 클래스에대해 알아보자

    [JAVA] 자바 입출력과 스트림 - (1) | scanner 클래스와 Console 클래스에대해 알아보자

    입력과 출력은 프로그램의 가장 기본 기능이지만, 외부 저장 장치나 네트워크와 연동해야 하기에 장치에 따라 다르게 구현해야 한다. 자바는 장치에 따라 독립적인 입출력 기능을 제공한다. 스트림이란? 자바에서 모든 입출력은 스트림을 통해서 이루어진다. 스트림이라는 용어는 자료의 흐름이 물의 흐름과 같다는 의미에서 사용되었다. 입출력 장치는 매우 다양하기 때문에 이를 각각 다르게 구현하면 당연히 프로그램 호환성이 떨어진다. 이런 문제를 해결하기 위해 자바는 입출력 장치와 무관하고 일관성 있게 프로그램을 구현할 수 있도록 가상 통로인 스트림을 제공한다. 자료를 읽어들이는 소스와 대상에 따라 각각 다른 스트림 클래스를 제공한다. 자바에서 입출력 기능을 사용하는 곳은 파일 디스크, 키보드, 모니터, 메모리 입출력, ..

    [JAVA] 사용자 정의 예외 클래스 구현하기 | 아이디 설정 조건에서 예외 발생에대한 클래스를 구현해보자! | 사용자 정의 예외

    자바에서 제공하는 예외 처리 클래스 외에 개발하는 프로그램에 따라 다양한 예외 상황이 발생한다. 예를 들어 아이디 생성조건을 생각해보면, 아이디는 null값이면 안 되고, 8자 이상 20자 이하로 만들어야하는 조건이 필요할 수 있다. 이러한 조건을 만족하지 않는 예외 발생을 예방하기위해 예외 클래스를 직접 만드든 것이 필요하다. 지금부터 어떻게 구현하는지 알아보도록 하자. 사용자 정의 예외 클래스 구현하기 사용자 정의 예외 클래스를 구현할 떄에는 기존 JDK에서 제공하는 예외 클래스 중 가장 유사한 클래스를 상속받는 것이 좋다. 유사한 예외 클래스가 무엇인지 모르겠다면 Exception클래스에서 상속받으면 된다. package exception; public class IDFormatException e..

    [JAVA] 자바의 예외처리(Exception) | try-catch-finally 문, try-with-resource 문

    [JAVA] 자바의 예외처리(Exception) | try-catch-finally 문, try-with-resource 문

    예외처리(Exception) 소프트웨어를 사용하다보면 여러가지 오류상황이 발생하게 된다. 아무리 잘 만든 소프트웨어라고 하더라도 예외는 얼마든지 발생할 수 있다. 이런 상황이 생기더라도 갑자기 종료되는 상황이 일어나지 않도록 예외처리를 하는 것이 중요한데, 예외 처리 방법에 대해 알아보자! 예외 클래스 오류란? 프로그램에서 오류가 발생하는 상황은 두 가지가 있다. 1. 컴파일 오류 - 코드 작성중 실수로 발생함 2. 실행오류 - 실행중인 프로그램이 의도하지 않은 동작을 하거나 중지되는 오류(런타임 에러) 실행 오류 중 프로그램을 잘못 구현하여 의도한 바와 다르게 실행되어 발생하는 오류를 버그라고 한다. 컴파일 오류같은 경우 개발환경에서 대부분 원인을 알 수 있다. 그러나 프로그램 실행중 발생하는 오류는 ..

    [JAVA] 람다식이란? 람다식 사용 방법에대해 알아보자!

    [JAVA] 람다식이란? 람다식 사용 방법에대해 알아보자!

    람다식이란? 람다식이란 "식별자없이 실행가능한 함수"이다. 함수인데 함수를 따로 만들지 않고 코드한줄에 함수를 써서 그것을 호출하는 방식이라고 생각하시면 된다. 함수적 프로그래밍을 위해 자바 8부터 람다식(Lambda Expressions)을 지원하면서 기존의 코드 패턴이 많이 달라졌다. 람다식 사용법 (매개변수, ...) -> { 실행문 ... } (매개변수, ...)는 오른쪽 중괄호 { } 블록을 실행하기 위해 필요한 값을 제공하는 역할을 한다. 매개 변수의 이름은 개발자가 자유롭게 지정할 수 있으며 인자타입도 명시하지 않아도 된다.-> 기호는 매개 변수를 이용해서 중괄호 { } 바디를 실행한다는 뜻으로 해석하면 됨. 예제 @FunctionalInterface interface Say{ int som..

    [JAVA] 스트림(Stream)이란 무엇일까?

    [JAVA] 스트림(Stream)이란 무엇일까?

    Stream의 특징 기능적인 측면에서 스트림은 컬렉션(배열 포함)의 저장 요소를 하나씩 참조해서 람다식으로 처리할 수 있도록 해주는 반복자이다. import java.util.*; public class Main { public static void main(String[] args) { List list = Arrays.asList(1, 2, 3); Iterator it = list.iterator(); while (it.hasNext()) { int num = it.next(); System.out.println(num); } } } 정수가 있는 리스트를 하나씩 순회하면서 값을 출력하는 단순한 코드이다. 이를 스트림으로 바꿔 보자. import java.util.*; import java.util.s..

    [JAVA] 내부 클래스(inner class)와 익명 클래스(anonymous class)에대해 알아보자

    [JAVA] 내부 클래스(inner class)와 익명 클래스(anonymous class)에대해 알아보자

    내부 클래스(inner class)는 사실 클래스 내에 선언된다는 점을 제외하고는 일반적인 클래스와 다르지 않다. 내부 클래스에는 인스턴스 클래스, 스태틱 클래스, 지역 클래스, 익명 클래스의 종류로 나눌 수 있다. 목차 1. 내부 클래스란? 2. 내부 클래스의 종류와 특징 3. 내부 클래스의 선언 4. 내부 클래스의 제어와 접근성 5. 익명 클래스(anonymous class) 1. 내부 클래스란? 내부 클래스는 클래스 내에 선언된 클래스입니다. 한 클래스를 다른 클래스의 내부 클래스로 선언하면 두 클래스의 멤버들 간에 서로 쉽게 접근할 수 있다는 장점과 외부에는 불필요한 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있다는 장점을 얻을 수 있습니다. 내부 클래스의 장점 내부 클래스에서 외부 클래스의 멤..