-
자바 개념 4 (입출력)학교 수업/자바프로그래밍 2020. 4. 18. 18:25
자바 입출력
- 자바에서는 파일이나 콘솔의 입출력을 직접 다루지 않고, 스트림(stream)이라는 흐름을 통해 다룸.
스트림 ? 실제의 입력이나 출력이 표현된 데이터의 이상화된 흐름.
순서있는 데이터의 연속적인 흐름
자료의 입출력을 도와주는 중간매개체
한 방향으로만 통신할 수 있어서, 입력과 출력을 동시에 처리할 수 없음.
두 작업을 동시에 하고 싶다면, 스트림 객체 2개를 생성해야한다.
입출력 스트림은 객체 형태로 사용하며 읽기,쓰기,바이트 개수 계산 등 미리 정의된 유용한 메서드를 제공.
스트림의 종류?
문자단위로 처리하느냐, 바이트 단위로 처리하느냐에 따라 나뉨
바이트 스트림 - 입력의 경우 InputStream 이 붙으며 출력의 경우 OutputStream 이 붙는다
이미지나 동영상 등을 송수신 할때 주로 사용
문자 스트림 -입력의 경우 Reader 이 붙으며 출력의 경우 Writer 이 붙는다
HTML 문서, 텍스트 파일을 송수실할 때 주로 사용
자바의 표준 입출력
- 자바에서는 표준 입출력(콘솔 입출력)을 위해 System 이라는 표준 입출력 클래스를 사용.
(c언어의 scanf(),prinf()처럼)
(java,lang 패키지에 포함되있음)
- System 클래스에는 표준 입출력을 위해 다음과 같은 클래스 변수(static variable)가 정의되어 있다.
① System.in : 표준 입력
② System.out : 표준 출력
③ System.err : 표준 출력
- 사용법?
표준 입출력 스트림은 자바가 자동으로 생성하므로, 개발자가 별도로 스트림을 생성하지 않아도 사용가능하다.
예를 들어, System이라는 클래스의 static 필드 in에 이미 InputStream 객체가 하나 존재
123456789//System.in.read()는 아스키 코드값이 입력int num = System.in.read() - 48; //or - '0';System.out.print(7); // print() 메소드는 줄 바꿈을 하지 않음.System.out.println(3); // 정수 출력System.out.println(3.14); // 실수 출력System.out.println("자바!"); // 문자열 출력System.out.println("문자열끼리의 " + "연결도 가능합니다.");System.out.println("숫자" + 3 + "과 문자열의 연결도 가능합니다.");cs **System.in을 직접 사용하면 바이트를 문자나 숫자로 변환해야 하는 어려움 존재.**
콘솔 입력 예시
123456789101112131415161718192021222324InputStream in = System.in;int a;byte[] b = new byte[3];a = in.read() - '0'; //System.in에 들어있던 그 객체의 read()메소드를 사용/*a = System.in.read()랑 같은 말*/in.read(b);InputStream in = System.in;InputStreamReader reader = new InputStreamReader(in);char[] a = new char[3];reader.read(a);BufferedReader br = new BufferedReader(reader);// new BufferedReader(new InputSteamReader(System.in));String a = br.readLine();//InputStream - byte//InputStreamReader - character//BufferedReader - Stringcs 입력 받기 데 편한 클래스로는 Scanner 클래스가 있다.
단어 뿐만 아니라 숫자, 문자열등 다양하게 읽어 들일 수 있는 여러 메소드들이 준비되어있음.
Scanner 클래스를 이용해 콘솔 입력 받는 예시
123456789import java.util.Scanner; //기본적으로 import 문 필요Scanner sc = new Scanner(System.in);String name = scan.next(); // "HAN"String city = scan.next(); // "INCHEON"int age = scan.nextInt(); // 25double weight = scan.nextDouble(); // 65.1boolean single = scan.nextBoolean(); // truecs next - 단어, nextLine - 라인, nextInt - 정수 등 다양
'학교 수업 > 자바프로그래밍' 카테고리의 다른 글
자바 개념 6(thread) (0) 2020.04.23 자바 개념 5(socket programming의 바탕 TCP/IP) (0) 2020.04.23 자바개념3 (상속) (0) 2020.04.16 자바 개념2 (클래스, 필드, 메소드, 제어자) (0) 2020.04.16 자바 개념 (0) 2020.04.16