본문 바로가기

프로그래밍 언어/JAVA

(62)
JAVA 입문 - 학점 산출 프로그램 만들기 지난 글 : [프로그래밍 언어/JAVA] - JAVA 입문 - 그 외 입출력 클래스 문제 정의하기 프로그램 시나리오 : JAVA School에는 5명의 학생이 수업을 듣는다. 과목은 국어, 영어이고 각 학생은 두 과목 모두 수강한다. 그리고 국어국문학과 학생은 국어가, 영어교육과 학생은 영어가 필수 과목이다. 이번 학기 각 학생의 과목별 성적은 아래와 같다. 학점을 부여하는 방법은 단순히 A, B, C, D, F를 사용하는 방법과 A+, B- 처럼 +/-를 사용하는 방법, 통과(pass), 탈락(fail)을 사용하는 방법 등 여러 방법이 있다. 여기서 각 학생에게 학점을 부여하는 방법은 두 가지다. 일반 과목이면 A~F로, 필수 과목이면 S~F로 분류한다. 점수에 따른 자세한 학점 부여 기준은 아래와 같..
JAVA 입문 - 그 외 입출력 클래스 지난 글 : [프로그래밍 언어/JAVA] - JAVA 입문 - 직렬화 File 클래스 File 클래스는 파일이라는 개념을 추상화한 클래스다. 파일에 대한 입출력은 최근 글들에서 배운 스트림을 사용해 수행한다. 따라서 File 클래스에 별도의 입출력 기능은 없지만 파일 자체의 경로나 정보를 알 수 있고 파일을 생성할 수도 있다. File 클래스의 주요 생성자는 아래와 같다. 아래 코드를 보며 File 클래스에서 제공하는 여러 메서드 기능을 알아보자. File 클래스를 생성한다해서 실제 파일이 생성되는 것이 아니라 createNewFile( ) 메서드를 활용해 파일을 생성한다. 그리고 File 클래스가 제공하는 메서드로 생성한 파일의 속성을 살펴볼 수 있다. 19행 delete( ) 메서드를 사용해 파일을 ..
JAVA 입문 - 직렬화 지난 글 : [프로그래밍 언어/JAVA] - JAVA 입문 - 보조 스트림 직렬화와 역직렬화 클래스의 인스턴스가 생성되면 인스턴스의 상태(인스턴스 변수 값)는 계속 변하게 된다. 헌데 인스턴스의 어느 순간 상태를 그대로 저장하거나 네트워크를 통해 전송할 일이 있을 수 있다. 이를 직렬화(serialization)라 한다. 그리고 저장된 내용이나 전송받은 내용을 다시 복원하는 것을 역직렬화(deserialization)라 한다. 간단히, 직렬화란 인스턴스 내용을 연속 스트림으로 만드는 것이다. 스트림으로 만들어야 파일에 쓸 수도 있고 네트워크로 전송할 수도 있다. 따라서 직렬화 과정에서 하는 일은 인스턴스 변수 값을 스트림으로 만드는 것이다. 자바에서는 보조 스트림 ObjectInputStream과 Obj..
JAVA 입문 - 보조 스트림 지난 글 : [프로그래밍 언어/JAVA] - JAVA 입문 - 문자 단위 스트림 보조 스트림이란 입출력 대상이 되는 파일이나 네트워크에 직접 쓰거나 읽는 기능은 없고 말 그대로 보조 기능을 추가하는 스트림이다. 이 보조 기능은 여러 스트림에 적용할 수 있다. 보조 스트림은 다른 스트림을 감사고 있다는 의미로 Wrapper 스트림이라고도 한다. 스스로는 입출력 기능이 없기에 생성자의 매개변수로 다른 스트림을 받게 되면 자신이 감싸고 있는 스트림이 읽거나 쓰는 기능을 수행할 때 보조 기능을 추가한다. FilterInputStream과 FilterOutputStream FilterInputStream과 FilterOutputStream은 보조 스트림의 상위 클래스다. 모든 보조 스트림은 FilterInputS..
JAVA 입문 - 문자 단위 스트림 지난 글 : [프로그래밍 언어/JAVA] - JAVA 입문 - 바이트 단위 스트림 Reader 문자 단위로 읽는 스트림 중 최상위 스트림이다. 아래 하위 클래스를 주로 사용한다. 아래와 같이 자료를 읽는 메서드를 제공한다. Reader 중 가장 많이 사용하는 FileReader를 알아보자. FileReader FileReader의 생성자는 아래와 같다. FileInputStream과 마찬가지로 읽으려는 파일이 없으면 FileNotFoundException이 발생한다. Reader 스트림을 활용하지 않고 바이트 단위로 문자를 읽을 때 문자가 어떻게 되는지 알아보자. 그러기 위해 지난 글에서 사용한 FileInputStream으로 자료를 읽어보자. 현재 프로젝트에 reader.txt 파일을 만들고 한글로 '..
JAVA 입문 - 바이트 단위 스트림 지난 글 : [프로그래밍 언어/JAVA] - JAVA 입문 - 표준 입출력 이제 다양한 스트림의 종류와 사용법에 대해 알아보자. 이번 글에서 배우는 스트림은 입출력 기능을 구현하는 데 기본으로 알아야 하는 클래스와 메서드라고 한다. 우선 바이트 입출력 스트림부터 알아보자. InputStream 바이트 단위로 읽는 스트림 중 최상위 스트림이다. InputStream은 추상 메서드를 포함한 추상 클래스로서 하위 스트림 클래스가 상속받아 각 클래스 역할에 맞게 추상 메서드 기능을 구현한다. 주로 사용하는 하위 클래스는 아래와 같다. InputStream은 바이트 자료를 읽기 위해 아래 메서드를 제공한다. read( ) 메서드의 반환형은 int다. 한 바이트를 읽어서 int에 저장한다. 한 바이트만 읽는 데 반..
JAVA 입문 - 표준 입출력 지난 글 : [프로그래밍 언어/JAVA] - JAVA 입문 - 자바 입출력과 스트림 자바에서는 화면에 출력하고 입력받는 표준 입출력 클래스가 이미 정의되어 있다. 이 클래스는 프로그램이 시작될 때 생성되므로 따로 만들 필요가 없다. 지금까지 화면 출력을 위해 사용한 System.out은 표준 출력을 위한 객체다. 표준 입출력은 콘솔 화면에 입출력된다 해서 콘솔 입출력이라고도 한다. 표준 입출력을 위한 System 클래스는 아래와 같이 세 개의 변수를 갖고 있다. System.out은 표준 출력용, System.in은 표준 입력용 스트림이다. 빨간색으로 오류 메시지를 출력할 때는 System.err를 사용한다. out, in, err 모두 정적(static) 변수다. 지금까지 System 클래스를 생성하지..
JAVA 입문 - 자바 입출력과 스트림 지난 글: [프로그래밍 언어/JAVA] - JAVA 입문 - 사용자 정의 예외 입출력은 프로그램의 가장 기본 기능이지만, 외부 저장 장치나 네트워크와 연동해야 하기에 장치에 따라 다르게 구현한다. 자바는 장치에 따라 독립적이고 효율적인 입출력 기능을 제공한다. 스트림이란? 자바에서 모든 입출력은 스트림(stream)을 통해 이루어진다. 스트림이란 네트워크에서 유래된 용어이며 자료 흐름이 물의 흐름과 같다는 의미에서 사용됐다. 입출력 장치는 매우 다양하기에 장치에 따라 입출력 부분을 일일이 다르게 구현하면 프로그램의 호환성이 떨어진다. 이런 문제를 해결하기 위해 자바는 입출력 장치와 무관하고 일관성 있게 프로그램을 구현할 수 있도록 일종의 가상 통로인 스트림을 제공하는 것이다. 자료를 읽어 들이려는 소스(..