본문 바로가기
☕Java/Java 기본

Java 기본 입출력

by 캔 2021. 5. 20.

본격적으로 자바 문법을 다뤄보려고 한다. 일단 프로그래밍 언어를 배울 때 처음 알아 두어야 할 것이 주석문이다.

주석문은 프로그래밍 코드에서 코드로 인식하지 않는 구문이며 코드에 대한 간단한 설명이나 코드의 일부분에서 실행될 코드를 제외시킬 때 사용한다. 자바에서 한 줄 주석은 '//'를 입력하고 주석문을 입력하면 되고, 블록 주석(여러 줄을 주석 처리)은 '/*'와 '*/' 사이에 주석문을 쓰면 된다.

//한 줄 주석

/*
블록 주석
*/

 

자바의 기본 입출력을 코딩을 통해 알아보자. 다음은 문자열을 출력하는 예제이다.

package Day1;//패키지 이름 선언

public class HelloWorld {//클래스 명 선언

	public static void main(String[] args) {// 메인 메서드 선언
		
		System.out.println("Hello World"); //System.out 클래스의 println 메서드 호출
        
	}
    
}

 

자바는 객체 지향 언어라고 했다. 객체 지향 언어에서 프로그래밍의 단위이자 하나의 모듈을 클래스라고 한다. 자바는 클래스로 시작해서 클래스로 끝난다고 말할 수 있을 정도로 클래스로 모든 코드가 이루어져 있다. 심지어 프로그래밍을 시작하면서 배우는 출력 코드인 Hello World조차도 클래스가 담겨 있다. 위 코드에서 package는 코드 문서들의 집합으로서 윈도우의 폴더라고 생각하면 쉽다. 같은 클래스 안에 있는 코드 문서라는 것을 알리기 위해 Day1이라는 이름으로 패키지를 첫 줄에서 선언했다. 그리고 Helloworld라는 클래스를 선언했다. 하나의 자바 파일 안에는 반드시 하나 이상의 클래스가 들어가야 한다. Hello world 클래스 안에 C언어 계열에서 프로그램의 시작점인 main 메서드(혹은 함수)가 호출되어 있다.  메인 메서드 블록(중괄호 안의 내용을 의미) 안에 System.out.이라는 클래스에 속하는 println(하나의 line을 출력하는 메서드)를 호출하였다. prinln은 괄호 안의 "Hello World"라는 문자열을 매개변수로 받아 프로그램 실행 시 콘솔에 "Hello World"라는 문자열을 출력할 것이다.

 

한 가지 주의할 점은 java도 c언어 계열 프로그래밍 언어들과 같이 문장 끝에는 ;(세미콜론)을 붙여주어야 한다. 위 코드에서 println() 메서드 뒤에 세미콜론을 붙인 것을 볼 수 있다. 블록이 아닌 변수나 메서드 끝에는 반드시 세미콜론을 붙여야 에러가 나지 않는다.

 

이번에는 입력 예제를 살펴보자.

package Day1;

import java.util.Scanner;//java.util.Scanner 패키지를 임포트

public class Scanner {
	
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);// Scanner 객체 sc를 생성
		
		System.out.println(sc.next()); sc 객체로 입력받은 문자열을 출력하는 메서드
		
	}
	
}

 

출력 예제와 다른 점은 import로 시작하는 구문이 들어갔다는 것이다. 자바에서 문자를 입력받을 때는 Scanner라는 객체가 필요하다. 따라서 import문으로 java.util 패키지의 Scanner 객체를 가져왔다. 그다음 HelloWorld 예제와 마찬가지로 클래스를 선언해준다. 여기서는 Scanner라는 이름으로 선언을 해줬다. 그리고 main 메서드를 호출해주고 main 메서드 블록에서 sc라는 이름의 Scanner 객체를 생성해주었다. Scanner 객체는 System.in이라는 객체를 매개변수로 받는데 이는 컴퓨터가 받는 입력값을 의미한다. 코드를 실행해보면 알겠지만 프로그램이 시작되면 콘솔에 마우스를 갖다 대면 포인터가 계속 돌고 있기 때문에 입력값을 대기받는 중이라는 것을 알 수 있다. 이때 입력할 값을 입력하고 엔터를 치면 입력한 값이  System.in에 담기고 sc 객체에 연결되는 것이다. 그러고 나면 System.out 클래스의 println() 메서드가 sc 객체의 next 메서드가 내놓은 값을 출력하려고 할 것이다. next 메서드는 sc 객체가 생성되고 나서 사용자가 엔터를 치기 전까지 입력된 문자열을 모두 반환하는 메서드이다. 따라서 이 코드를 실행시키면, 프로그램 실행 시 사용자가 입력한 값을 출력해준다.