Day1-1 Java 프로그램 기본 구조 + 입력 + 출력

손주완·2026년 6월 20일

기본 구조

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        // 실제 실행 코드는 여기
    }
}

class Solution은 코드가 들어가는 상자이다.
Java는 코드를 기본적으로 클래스 안에 작성한다.
프로그래머스는 보통 Solution 클래스를 기준으로 실행.

main은 Java 프로그램의 시작점이다.

public static void main(String[] args)

의미는:

public = JVM이 밖에서 접근 가능
static = 객체 생성 없이 바로 실행 가능
void = 반환값 없음
main = Java가 시작점으로 찾는 이름
String[] args = 실행할 때 외부에서 받을 수 있는 문자열 배열

코딩테스트에서는 args는 거의 안 쓰지만, Java의 약속된 시작 함수 모양이라 넣는다.


static vs 일반 메서드

궁금증. static/dynamic 할때랑 같은 static 맞나? - 맞음
Java에서 static은 객체마다 따로 생기는 것이 아니라, 클래스가 메모리에 올라갈 때 클래스에 하나만 붙는것.

dynamic = 실행 중에 객체를 만들고, 객체별 상태를 가짐
static = 클래스 로딩 시점에 정해지고, 객체 없이 클래스에 붙음
static쓰면 객체 생성할 필요 없이 사용가능. 메서드 등이 클래스에 붙음
static 안 붙이면 객체를 만들 때 생성되는 인스턴스 멤버가 된다

main에 static이 붙어있는 이유
프로그램 시작 전에 Solution 객체를 만들지 않아도
JVM이 Solution.main()을 바로 호출할 수 있어야 하니까

static 메서드 = 객체 없이 클래스 이름으로 바로 호출
일반 메서드 = 객체를 만든 다음 그 객체를 통해 호출

예:

Math.max(3, 5);

Math.maxstatic이라서 new Math()를 안 한다.

반면:

Scanner sc = new Scanner(System.in);
sc.next();

Scanner는 실제 입력 상태를 관리해야 하니까 객체를 만들어서 사용한다.


Scanner

Scanner sc = new Scanner(System.in);

뜻:

표준 입력(System.in)을 읽는 Scanner 객체를 만들고,
그 객체를 sc라는 이름으로 쓰겠다.

문자열 입력:

String a = sc.next();

정수 입력:

int a = sc.nextInt();

출력

그냥 출력:

System.out.println(a);

문자열이랑 변수 같이 출력:

System.out.println("a = " + a);

+는 문자열과 변수를 이어 붙인다.

예를 들어 a4면:

"a = " + a

결과는:

a = 4

입력 도구 만들기: Scanner sc = new Scanner(System.in);
문자열 입력: sc.next()
정수 입력: sc.nextInt()
출력: System.out.println()
문자열 + 변수 출력: "a = " + a

0개의 댓글