본문 바로가기
공부/JAVA

Java의 입출력

by 떈구 2025. 3. 5.

기본적으로 C++을 알고 있으므로 C++과 비교하여 문법을 배워 보려 한다.

C++과 Java는 각각 다른 방식으로 입력과 출력을 처리한다. C++의 cin, cout과 Java의 Scanner, System.out.println()의 차이를 이해하면, Java의 문법을 더 쉽게 접근 가능한거 같기 때문.

 

1. 기본적인 출력

C++에서의 출력

#include <iostream>
using namespace std;

int main() 
{
    cout << "Hello, World!" << endl;
    return 0;
}

Java에서의 출력

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello, World!"); // 자동 줄바꿈 포함
    }
}

📌 System.out.println()은 자동으로 줄 바꿈을 포함.
📌 System.out.print()는 줄 바꿈 없이 출력.

 

 

 

2. 여러 개의 값을 출력하기

C++에서는 cout<< 연산자를 사용

int a = 10, b = 20;
cout << "a: " << a << ", b: " << b << endl;

Java에서는 + 연산자를 사용하여 문자열과 값을 연결

 

int a = 10, b = 20;
System.out.println("a: " + a + ", b: " + b);

 

 

3. Java의 입력 (Scanner, BufferedReader vs. C++ cin)

C++에서의 입력

#include <iostream>
using namespace std;

int main() 
{
    int a;
    cin >> a;
    cout << "입력한 값: " << a << endl;
    return 0;
}

(1) Java의 Scanner를 사용한 입력 (기본 입력 방식)

 

 

import java.util.Scanner; // Scanner를 사용하려면 import 필요

public class Main {
    public static void main(String[] args) 
    {
        Scanner sc = new Scanner(System.in); // Scanner 객체 생성

        int a = sc.nextInt(); // 정수 입력
        System.out.println("입력한 값: " + a);

        sc.close(); // Scanner 닫기 (자원 해제)
    }
}

📌 ScannernextInt(), nextDouble(), nextLine() 등 다양한 입력 메서드를 제공한다.

📌 sc.close()를 호출하여 입력 스트림을 닫아주는 것이 권장됨.

 

(2) 여러 개의 값을 입력받기

Scanner sc = new Scanner(System.in);

int a = sc.nextInt();  // 정수 입력
double b = sc.nextDouble(); // 실수 입력
String s = sc.next(); // 문자열 입력 (공백 전까지)

// 출력
System.out.println("a: " + a + ", b: " + b + ", s: " + s);

📌 sc.next()는 공백을 기준으로 하나의 단어만 입력받음.
📌 여러 개의 값을 한 줄에서 입력받을 때 적합.

 

(3) 한 줄 전체 입력받기 (nextLine())

Scanner sc = new Scanner(System.in);
String line = sc.nextLine(); // 한 줄 전체 입력
System.out.println("입력한 문장: " + line);

📌 공백을 포함한 문자열을 입력받고 싶을 때 nextLine() 사용.
📌 next()는 공백 전까지, nextLine()은 엔터(Enter) 전까지 입력을 받음.

 

 

(4) BufferedReader를 이용한 입력 (빠른 입력 처리)

 

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String s = br.readLine(); // 한 줄 입력 받기
        System.out.println("입력한 문장: " + s);
    }
}

📌 BufferedReaderScanner보다 빠르게 입력을 처리할 수 있다.
📌 readLine()은 한 줄 전체를 입력받는다.
📌 입력 후 Integer.parseInt()를 사용해 정수로 변환할 수 있다.

 

 

3. C++ cin vs. Java Scanner vs. Java BufferedReader 속도 비교

입력 방식속도사용 목적

cin (C++) 🚀 빠름 기본 입력
Scanner (Java) ⏳ 느림 일반적인 입력 처리 (초보자 친화적)
BufferedReader (Java) 🚀 빠름 대량 입력 처리 (경쟁 프로그래밍)

📌 Java에서 빠른 입력이 필요하면 BufferedReader를 사용하는 것이 좋음.
📌 C++의 cin은 sync_with_stdio(false);를 사용하면 속도를 높일 수 있음.

 

 

 

4. C++ cin vs. Java Scanner vs. Java BufferedReader 속도 비교                             

입력 방식 속도 사용 목적
cin (C++) 🚀 빠름 기본 입력
Scanner (Java) ⏳ 느림 일반적인 입력 처리 (초보자 친화적)
BufferedReader (Java) 🚀 빠름 대량 입력 처리 (경쟁 프로그래밍)
📌 Java에서 빠른 입력이 필요하면 BufferedReader를 사용하는 것이 좋다.    
📌 C++의 cinsync_with_stdio(false);를 사용하면 속도를 높일 수 있다.    

Java에서 Scanner는 사용하기 쉽지만, 속도가 느려 BufferedReader를 사용하는 것이 더 효율적
C++에서는 cin이 기본이며, 빠른 입력을 위해 sync_with_stdio(false); 사용 가능
출력 방식은 C++의 cout과 Java의 System.out.println()이 유사하지만, Java에서는 + 연산자로 문자열을 연결하는 것이 일반적

 

 

5. C++ cin / cout vs. Java Scanner / BufferedReader 비교

기능 C++ (cin / cout) Java (Scanner / System.out.println())
입력 기본 방식 cin >> 변수; Scanner sc = new Scanner(System.in); sc.nextInt();
빠른 입력 ios::sync_with_stdio(false); BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
한 줄 전체 입력 getline(cin, str); sc.nextLine(); 또는 br.readLine();
출력 cout << "Hello"; System.out.println("Hello");
문자열 연결 "Hello " + name; "Hello " + name;

💡 Java에서는 간단한 입력을 Scanner로 처리하고, 빠른 입력이 필요하면 BufferedReader를 사용한다. 출력은 System.out.println()을 활용하면 된다.