기본적으로 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 닫기 (자원 해제)
}
}
📌 Scanner는 nextInt(), 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);
}
}
📌 BufferedReader는 Scanner보다 빠르게 입력을 처리할 수 있다.
📌 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++의 cin은 sync_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()을 활용하면 된다.
'공부 > JAVA' 카테고리의 다른 글
자바의 클래스 (Java Class) (1) | 2025.03.07 |
---|---|
자바의 가비지 컬렉터 (Garbage Collector, GC) (0) | 2025.03.07 |
자바의 변수와 메서드(함수) (0) | 2025.03.07 |
자바의 시작 - 프로그램 셋팅 및 헬로우 월드 (0) | 2025.03.05 |