본문 바로가기

java

(18)
입출력 관련 API System.in은 InputStream 타입이고 System.out은 PrintStream 타입입니다. 콘솔은 시스템을 사용하기 위해 키보드로 입력을 받고 모니터로 출력하는 소프트웨어를 말합니다. 1. System.in 필드 자바는 콘솔에서 키보드의 데이터를 입력받을 수 있도록 System 클래스의 in 정적 필드를 제공합니다. System.in은 InputStream 타입의 필드이므로 다음과 같이 InputStream 변수로 참조가 가능합니다. InputStream is - System.in; 키보드로부터 어떤 키가 입력되었는지 확인하려면 InputStream의 read() 메소드로 1byte를 읽으면 됩니다. 리턴된 int 값에는 해당 키의 코드가 저장되어 있습니다. int keyCode = is...
보조 스트림 기본 스트림인 InputStream, OutputStream, Reader, Writer를 직접 사용해서 데이터를 입출력할 수 있지만, 데이터를 변환해서 입출력하거나, 데이터의 출력 형식을 지정하고 싶을 경우, 그리고 입출력 성능을 향상시키고 싶을 경우가 있을 것입니다. 이럴 때 기본 스트림에 보조 스트림을 연결하여 사용하면 편리하게 여러 기능들을 구현할 수 있습니다. 보조 스트림을 연결하려면 보조 스트림을 생성할 때 자신이 연결될 스트림을 다음과 같이 생성자의 매개값으로 제공하면 됩니다. InputStream is = ...; InputStreamReader reader = new InputStreamReader(is); 또한 보조 스트림의 생성자 매개값은 기본 스트림 이외에 또 다른 보조 스트림이 될..
java 입출력 스트림 java.io 패키지에는 여러 가지 종류의 스트림 클래스를 제공하고 있습니다. 이들 스트림 클래스는 다음과 같이 크게 두 종류로 구분됩니다. 바이트 기반 스트림: 그림, 멀티미디어 등의 바이너리 데이터를 읽고 출력할 때 사용 문자(character) 기반 스트림: 문자 데이터를 읽고 출력할 때 사용 스트림 클래스가 바이트 기반인지, 문자 기반인지를 구별하려면 최상위 클래스를 보면 됩니다. 구분 바이트 기반 스트림 문자 기반 스트림 입력 스트림 출력 스트림 입력 스트림 출력 스트림 최상위 클래스 InputStream OutputStream Reader Writer 하위 클래스 (예) XXXInputStream (FileInputStream) XXXOutputStream (FileOutputStream) X..
java 스택, 큐 1. Stack 주요 메소드 리턴 타입 메소드 설명 E push(E item) 주어진 객체를 스택에 넣음 E peek() 스택의 맨 위 객체를 가져옴, 객체를 스택에서 제거하지 않음 E pop() 스택의 맨 위 객체를 가져옴, 객체를 스택에서 제거 결과: 꺼낸 동전: 50 꺼낸 동전: 500 꺼낸 동전: 10 꺼낸 동전: 100 2. Queue 주요 메소드 리턴 타입 메소드 설명 boolean offer(E e) 주어진 객체를 큐에 넣음 E peek() 제일 먼저 넣은 큐의 객체를 가져옴, 객체를 큐에서 제거하지 않음 E poll() 제일 먼저 넣은 객체를 가져옴, 객체를 큐에서 제거 Queue 인터페이스를 구현한 대표적인 클래스는 LinkedList입니다. LinkedList는 List 인터페이스를 구..
java 컬렉션 프레임워크 자바는 널리 알려진 자료구조를 사용해서 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 인터페이스와 구현 클래스를 java.util 패키지에서 제공합니다. 이들을 총칭해서 컬렉션 프레임워크라고 부릅니다. 컬렉션은 객체의 저장을 뜻하고, 프레임워크란 사용 방법을 정해 놓은 라이브러리를 말합니다. 실제로 컬렉션 프레임워크는 사용 방법을 정의한 인터페이스와 실제 객체를 저장하는 다양한 컬렉션 클래스(구현 클래스)를 제공합니다. 1. List 컬렉션 - ArrayList, Vector, LinkedList List 컬렉션은 배열과 비슷하게 객체를 인덱스로 관리합니다. 배열과의 차이점은 저장 용량이 자동으로 증가하며, 객체를 저장할 때 자동 인덱스가 부여된다는 것입니다. 그리고 추가, 삭제, 검색을 위한 다양..
스레드 제어 스레드를 생성하고 시작하면 스레드는 다양한 상태를 가지게 됩니다. 스레드의 상태는 자동으로 변경될 수도 있고, 코드에 의해서 변경될 수도 있습니다. 이번 절에서는 스레드의 상태를 변경해서 스레드를 제어하는 방법에 대해 알아보겠습니다. 1. 스레드 상태 스레드 객체를 생성하고 start() 메소드를 호출하면 곧바로 스레드가 실행되는 것처럼 보이지만 사실은 실행 대기 상태가 됩니다. 실행 대기 상태에 있는 스레드 중에서 운영체제는 하나의 스레드를 선택하고 CPU(코어)가 run() 메소드를 실행하도록 합니다. 이때를 실행 상태라고 합니다. 실행 상태의 스레드는 run() 메소드를 모두 실행하기 전에 다시 실행 대기 상태로 돌아갈 수 있습니다. 그리고 실행 대기 상태에 있는 다른 스레드가 선택되어 실행 상태가..
java.lang 패키지 java.lang 패키지는 자바 프로그램의 기본적인 클래스를 담고 있는 패키지입니다. 그래서 java.lang 패키지의 클래스와 인터페이스는 import 없이 사용할 수 있습니다. java.lang 패키지의 주요 클래스와 간략한 용도를 먼저 살펴보겠습니다. Object = 자바 클래스의 최상위 클래스로 사용. System = 표준 입력장치로부터 데이터를 입력받을 때 사용, 표문 출력장치로 출력하기 위해 사용, 자바 가상 기계를 종료할 때 사용, 가비지콜렉터 실행을 요철할 때 사용. Class - 클래스를 메모리로 로딩할 때 사용. String - 문자열을 저장하고 여러 가지 정보를 얻을 때 사용. Wrapper(Byte, Short, Character, Integer, Float, Double, Bool..
java 예외 처리 - 예외 클래스 자바에서는 예외를 클래스로 관리합니다. JVM은 프로그램을 실행하는 도중에 예외가 발생하면 해당 예외 클래스로 객체를 생성합니다. 그리고 나서 예외 처리 코드에서 예외 객체를 이용할 수 있도록 해줍니다. 모든 예외 클래스는 java.lang,Exception 클래스를 상속받습니다. java.lang,Exception의 자식들로는 java.lang.RuntimeException에 속한 것과 그렇지 않은 것들이 있습니다. 여기서 java.lang.RuntimeException에 속한 하위 클래스들이 실행 예외에 속하며, 나머지는 일반 예외에 속합니다. 1. 실행 예외 실행 예외는 자바 컴파일러가 체크하지 않기 때문에 오로지 개발자의 경험에 의해서 예외 처리 코드를 작성해야 합니다. 만약 개발자가 실행 예외에..