ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바 개념 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 객체가 하나 존재


    1
    2
    3
    4
    5
    6
    7
    8
    9
    //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을 직접 사용하면 바이트를 문자나 숫자로 변환해야 하는 어려움 존재.**





    콘솔 입력 예시


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    InputStream in = System.in
    int a;
    byte[] b = new byte[3];
    = 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 - String
    cs



    입력 받기 데 편한 클래스로는 Scanner 클래스가 있다.

    단어 뿐만 아니라 숫자, 문자열등 다양하게 읽어 들일 수 있는 여러 메소드들이 준비되어있음.


    Scanner 클래스를 이용해 콘솔 입력 받는 예시


    1
    2
    3
    4
    5
    6
    7
    8
    9
    import java.util.Scanner//기본적으로 import 문 필요
     
    Scanner sc = new Scanner(System.in);
     
    String name = scan.next(); // "HAN" 
    String city = scan.next(); // "INCHEON" 
    int age = scan.nextInt(); // 25 
    double weight = scan.nextDouble(); // 65.1 
    boolean single = scan.nextBoolean(); // true
    cs


    next - 단어, nextLine - 라인, nextInt - 정수  등 다양

    댓글

Designed by Tistory.