보조 스트림 다른 스트림과 연결이 되어 여러 가지 편리한 기능을 제공해주는 스트림을 말한다. 보조 스트림 자체적으로 입출력을 수행할 수 없기 때문에 입출력 소스와 바로 연결할 수 있는 InputStream, OutputStream, Reader, Writer 등에 연결해서 입출력을 수행한다. 그렇다면 보조 스트림의 기능은 무엇일까? 문자를 변환할 수 있고, 입출력 성능을 향상시킬 수 있으며 기본 타입 입출력 등의 기능을 제공한다. 보조 스트림 연결하는 방법은 아래와 같다. 보조스트림 변수 = new 보조스트림(연결스트림) 위의 사진과 같이 보조 스트림을 연속적으로 연결할 수 있다. 그리고 프로그램은 입력 스트림으로부터 직접 데이터를 읽지 않고 보조 스트림에서 제공하는 기능을 이용해서 데이터를 읽는다. 반..
2023.06.04 - [국비 지원/JAVA] - [JAVA] 바이트 기반 입출력 스트림(Stream) (1) [JAVA] 바이트 기반 입출력 스트림(Stream) (1) 자바에서 데이터는 스트림을 통해 입출력된다. 스트림은 현재 실행중인 객체 자신을 기준으로 한다. 예를 들면 나를 중심으로 키보드는 입력하는 것이므로 입력 스트림이라 할 수 있고, 나의 입 myblog1128.tistory.com 앞에 글에서는 바이트 기반 입출력 스트림인 InputStream과 OutputStream에 대해서 알아보았다. 이번 글에서는 문자 기반 입출력 스트림인 Reader와 Writer에 대해서 정리해보도록 하자. 문자 출력 스트림 : Writer 리턴 타입 메소드 설명 void write(int c) 매개값으로 주어..
자바에서 데이터는 스트림을 통해 입출력된다. 아래의 사진을 통해 프로그램이 출발지냐 도착지냐에 따라 사용되는 스트림의 종류가 결정되는 것을 볼 수 있다. 프로그램이 도착지이면 흘러온 데이터를 입력받아야 하므로 입력 스트림을 사용하고, 프로그램이 출발지이면 데이터를 출력해야 하므로 출력 스트림을 사용한다. 스트림은 현재 실행중인 객체 자신을 기준으로 한다. 예를 들면 나를 중심으로 키보드는 입력하는 것이므로 입력 스트림이라고 할 수 있고, 나의 입장에서 콘솔과 모니터 등은 출력되는 것이므로 출력 스트림이라고 할 수 있다. 스트림은 1) 바이트 기반 스트림과 2) 문자 기반 스트림으로 나눌 수 있다. 바이트 기반 스트림 : 그림, 멀티미디어 등의 바이너리 데이터를 읽고 출력할 때 사용 문자 기반 스트림 : ..
컬렉션 프레임워크 자바는 자료구조를 사용해서 객체들을 효울적으로 추가, 삭제, 검색할 수 있도록 인터페이스와 구현 클래스를 java.util. 패키지에서 제공한다. 이들을 전부 컬렉션 프레임워크라고 한다. 컬렉션 프레임워크의 주요 인터페이스로는 List, Set, Map이 있다. 이 글에서는 List의 ArrayList에 대해 다뤄보고자 한다. ArrayList 배열과 비슷하게 객체를 인덱스로 관리한다. 하지만 배열과의 차이점이 있다. List는 저장 용량이 자동으로 증가하며, 객체를 저장할 때 자동으로 인덱스가 부여된다. 그리고 추가, 삭제, 검색을 위한 다양한 메소드들이 제공된다. ArrayList 메소드 1. add() 데이터를 리스트에 저장할 수 있다. import java.util.ArrayLi..
예외 처리 예외란 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류를 말한다. 예외는 곧바로 종료되는 에러와 비슷하지만 예외 처리를 통해 프로그램을 종료하지 않고 정상 실행 상태가 유지를 할 수 있다는 점에서 다르다고 할 수 있다. 예외의 종류 1. 일반 예외 프로그램 실행 시 예외가 발생할 가능성이 높기 때문에 자바 소스를 컴파일하는 과정에서 해당 예외 처리 코드가 있는지 검사하는 것을 말한다. 2.실행 예외 실행 시 예측할 수 없이 갑자기 발생하기 때문에 컴파일하는 과정에서 예외 처리 코드가 있는지 검사하지 않는 것을 말한다. RuntimeException의 하위 클래스가 아니면 일반 예외 클래스이고, 하위 클래스이면 실행 예외 클래스이다. 클래스 상속 관계에서 부모에 ..
final 필드 초기값이 저장되면 이것이 최종적인 값이 되어서 프로그램 실행 도중에 수정할 수 없는 필드를 말한다. final 필드에서 초기값을 줄 수 있는 방법은 1) 필드 선언 시에 주는 방법과 2) 생성자에서 주는 방법으로 두 가지밖에 없다. public class Example { final String nation = "한국";// 필드 선언시 초기화 final String name; int age; public Example(String name, int age) { this.name = name;// 생성자에서 초기화 this.age = age; } } public class FinalEx { public static void main(String[] args) { Example e = ne..
익명 함수 먼저 익명 함수라는 것은 말 그대로 이름이 없는 함수를 말한다. 익명 함수를 사용하는 이유는 나중에 다시 부를 일이 없으므로 프로그램 안에서 일시적으로 한 번만 사용되고 버려져도 되는 객체일 때 사용하는 것이다. 일회성이기 때문에 메모리 관리에서 효과적이다. 바로 익명 함수를 사용하는 예제를 보도록 하자. public abstract class AMin { public abstract int getMin(int x, int y); } // AminAnonymous 클래스를 사용한 익명 함수 사용 public class AminAnonymous{ public static void main(String[] args) { AMin aMin = new AMin() { @Override // 외부에서 ..
다중 상속 추상 클래스와 인터페이스를 공부했다면 추상 클래스와 인터페이스의 차이점에 대해 의문이 생길 것이다. 추상 클래스와 인터페이스의 공통점은 메소드의 선언만 할 수 있고 구현부가 없다는 점, 상속받은 클래스에서 추상 메소드를 구현해야 한다는 점이라고 할 수 있다. 그러면 추상 클래스 하나만 있어도 인터페이스의 역할을 다 할 수 있는 것이 아닐까?라는 생각이 들텐데 자바의 다중 상속 부분에서 차이가 난다. 일단 자바는 다중 상속이 불가능하다. 여기서 다중 상속이란 아래와 같이 자식 클래스의 부모가 여러 개인 것을 말한다. // 잘못된 코드 public class Vehicle extends Bus, Car { } 그러면 왜 다중 상속이 불가능할까라는 생각이 들 것이다. 만약에 Bus 클래스에도 dri..