콘솔 입력
🤔 콘솔이란?
- 컴퓨터를 대상으로 데이터를 입력하고 출력하는 장치들을 의미합니다.
- 예를 들어 키보드로 데이터를 입력하고 입력된 데이터를 출력하는 모니터도 콘솔 입출력 장치에 해당합니다.
Scanner 클래스
- 자바 5버전부터 Scanner 클래스가 도입되었습니다.
역할
- 키보드 입력뿐만 아니라 여러 가지의 입력 값에 대해서 데이터를 추출하는 역할을 하는 클래스입니다.
- java.util 패키지에 있으며 Scanner 클래스안에는 다음과 같이 여러 생성자들이 정의되어 있습니다.
Scanner(File source) //파일 입력과 관련된 생성자
Scanner(String source) //문자열 입력과 관련된 생성자
Scanner(InputStream source) //입력 스트림과 관련된 생성자
- Scanner 클래스를 사용할 때는 다음과 같이 패키지를 불러와야 합니다.
import java.util.Scanner;
- 다음의 코드를 통해 Scanner에 대해 자세하게 살펴봅시다.
💻 예시 코드
import java.util.Scanner;
public class ScanningString {
public static void main(String[]args){
String source = "1 3 5";
Scanner sc = new Scanner(source);
int num1 = sc.nextInt();
int num2 = sc.nextInt();
int num3 = sc.nextInt();
int sum = num1 + num2 + num3;
System.out.printf("%d + %d + %d = %d\\n",num1,num2,num3,sum);
}
}
📸 출력 결과
1 + 3 + 5 = 9
- 위의 코드에서 Scanner를 살펴보면 Scanner 인스턴스에 인자로 문자열 인스턴스(source)가 전달됩니다.
- Scanner 클래스는 참조변수 sc를 통해 source가 참조하는 대상으로부터, 데이터 값을 추출입니다.
Scanner sc = new Scanner(source);
Scanner 클래스의 키보드 사용
- 약간의 수정을 통해 Scanner 인스턴스와 키보드 입력에 대해 살펴보겠습니다.
- Scanner의 생성자로 전달된 System.in은 키보드를 의미합니다.
Scanner sc = new Scanner(System.in);
- 앞서 본 코드를 키보드 입력에 대해 바꾸어 보면 다음과 같습니다.
💻 예시 코드
import java.util.Scanner;
public class ScanningKeyboard {
public static void main(String[]args){
Scanner sc = new Scanner(System.in);
int num1 = sc.nextInt();
int num2 = sc.nextInt();
int num3 = sc.nextInt();
int sum = num1 + num2 + num3;
System.out.printf("%d + %d + %d = %d\\n",num1,num2,num3,sum);
}
}
📸 출력 결과
- nextInt메소드는 입력된 값을 int의 자료형으로 받는 역할을 합니다.
12
24
36
12 + 24 + 36 = 72
Scanner 클래스의 next ~ 메소드들
- 이번에는 입력값을 다양한 타입으로 읽어들이는 Scanner 클래스의 next ~메소드들에 대해 알아보겠습니다.
next ~ 메소드들
- 이해를 위해 다음의 코드를 살펴봅시다.
💻 예시 코드
public class ReadString {
public static void main(String[]args){
Scanner sc = new Scanner(System.in);
System.out.print("문자열 입력: ");
String str1 = sc.nextLine();
System.out.print("문자열 입력: ");
String str2 = sc.nextLine();
System.out.printf("입력된 문자열 1: %s\\n",str1 );
System.out.printf("입력된 문자열 2: %s\\n",str2 );
}
}
📸 출력 결과
- nextLine메소드를 통해 키보드를 이용해 입력한 문자열을 추출함을 알 수 있습니다.
문자열 입력 : Today is Wednesday
문자열 입력: I love Java
입력된 문자열 1: Today is Wednesday
입력된 문자열 2: I love Java
콘솔 출력
- 이번에는 콘솔 출력에 대해서 알아보겠습니다.
System.out.println과 System.out.print
- 자바에서의 대표적인 콘솔 출력 메소드에는 System.out.println과 System.out.print가 있습니다.
차이점
- System.out.println메소드는 출력 후 개 행(행을 바꿈)을 하고, 반면 System.out.print 메소드는 문자열만 출력하고 행을 바꾸지 않는다.
- 이와 관련하여 다음의 코드를 살펴봅시다.
💻 예제 코스
class Box{
private String conts;
public Box(String conts) {
this.conts = conts;
}
public String toString(){
return conts;
}
}
public class AutoCallToString {
public static void main(String[]args){
StringBuilder stb = new StringBuilder("12");
stb.append(34);
System.out.println(stb.toString());
System.out.println(stb);
Box box = new Box("Camera");
System.out.println(box.toString());
System.out.println(box);
}
}
📸 출력 결과
1234
1234
Camera
Camera
- 위에서 정의한 Box 클래스와 StringBuilder 클래스에는 다음과 같은 공통점이 있습니다.
-> 문자열을 반환하는 public String toString() 메소드가 정의되어 있습니다.
- 따라서 인스턴스(객체)가 가지고 있는 문자열의 확인하기 위해 System.out.println메소드를 사용하였습니다.
System.out.println(stb.toString()); // toString이 반환하는 문자열 출력
System.out.println(box.toString()); // toString이 반환하는 문자열 출력
- 또한 위의 코드를 살펴보면 다음과 같이 인스턴스(객체)의 참조 값을 넘겨도 동일한 출력 결과를 확인할 수 있었습니다.
System.out.println(stb);
System.out.println(box);
- 이를 통해 알수 있는 사실은 다음과 같습니다.
-> System.out.println 메소드에 참조 값을 전달하면, 이 값의 인스턴스(객체)를 대상으로 toString을 호출한다.
(반환되는 문자열을 출력함)
- 이와 같이 System.out.print 메소드 또한 동일하게 동작합니다.
📒 Reference (참고 자료)
- 윤성우의 열혈 자바
'프로그래밍 언어 > Java문법 - 객체지향' 카테고리의 다른 글
10. Java 객체지향 문법(10) - 상속의 기본 (0) | 2022.11.02 |
---|---|
9. Java 객체지향 문법(9) - 배열 (0) | 2022.10.31 |
7. Java 객체지향 문법(7) - String 클래스 (0) | 2022.10.28 |
6. Java 객체지향 문법(6) - 메소드 오버로딩 (0) | 2022.10.28 |
5. Java 객체지향 문법(5) - 클래스 변수와 클래스 메소드 (0) | 2022.10.26 |