본문 바로가기
CS/JAVA

Java의 입출력

by upswp 2021. 2. 21.

표준 입출력

  • System.in
  • System.out
  • System.err
  • System.setOut()
  • System.setErr()
  • System.setIn()

java.util.Scanner

  • 파일, 입력, 스트림등에서 데이터를 읽어 구분자로 토큰화하고 다양한 타임으로 형변환하여 리턴해주는 클래스
  • Scanner(File source)
  • Scanner(InputStream source)
  • Scanner(String source)
  • 입력 스트림을 다루는 방법을 몰라도 손쉽게 입력처리가능
  • 데이터 형변환으로 인한 편리함
  • 대량의 데이터 처리 시 수행시간이 비효율적임.
메소드 명 특징
nextInt() int 타입으로 반환
White space를 만나면 종료 (space, tab, new Line)
nextDouble() double 타입 반환
White space를 만나면 종료
next() 문자열을 반환
White space를 만나면 종료
nextLine() 문자열 반환
개행(Enter)를 만나면 종료
next()와 달리 문자열 안에 띄어쓰기를 할 수 있음. (공백을 포함함)
package io.scanner;

import java.util.Scanner;

public class IO_ScannerTest {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("정수, 실수, 문자열을 차례로 입력하세요.");
        System.out.println(sc.nextInt());
        System.out.println(sc.nextDouble());
//        System.out.println(sc.next());
        System.out.println(sc.nextLine());
    }
}        

java.io.BufferedReader

  • 필터 스트림 유형
  • 줄(line) 단위로 문자열 처리 기능 제공 ::: readLine()
  • 대량의 데이터 처리시 수행시간이 효율적임.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class IO_BufferedReader {
    public static void main(String[] args) throws Exception {
        //System.in : byte단위로 읽어드린다.
        //BufferedReader : char단위로 읽어드린다.
        //InputStreamReader : 읽어드리는 단위가 다르므로 byte단위를 모아서 char단위로 바꿔주는 역할을 한다.
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        // readLine() : char단위로 읽어드린것을 Line단위로 읽어드림.
        String a = br.readLine();
        System.out.println(a);
        // toCharArray() : 읽어드린 내용을 char배열로 바로 바꾸어 저장
        // charAt () : charAt(0) 읽어드린 String의 0 index 값을 읽어드릴지 고를 수 있음.
        char[] ch = br.readLine().toCharArray();
        for (char c : ch) {
            System.out.println(c);
        }
        //StringTokenizer : 토큰화를 하고 싶은 문자열을 날려서 구분자 단위로 나눔.
        StringTokenizer st = new StringTokenizer(br.readLine()," ");

        //nextToken() : 읽어드린 토큰화된 String을 하나 반환.
        //Integer.parseInt : 읽어드린 String 토큰을 정수형으로 바꾸어 반환.
        int i = Integer.parseInt(st.nextToken());
        int j = Integer.parseInt(st.nextToken());
        System.out.print(i+"//"+j);

    }
}

java.lang.StringBuilder

  • 문자열 조작을 지원하는 클래스
  • 자바에서 상수로 취급되는 문자열을 조작 시마다 새로운 문자열이 생성되는 것을 방지해줌.
  • append() : 문자열 합치기(뒤에 계속 붙임)
  • toString() : append한 값을 출력시킴 1번에
package io.stringBuilder;

public class IO_stringBuilder {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        sb.append("Hello");
        sb.append("World").append("!!");
        System.out.println(sb.toString()); // Hello World!!

        // setLength : 총 입력된 길이를 조정할때 사용
        // sb.length() -2 : 전체 길이에서 뒤에서 2개를 삭제하고 sb길이를 재조정.
        sb.setLength(sb.length()-2);
        System.out.println(sb.toString()); // Hello World
    }
}