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/dynamic 할때랑 같은 static 맞나? - 맞음
Java에서 static은 객체마다 따로 생기는 것이 아니라, 클래스가 메모리에 올라갈 때 클래스에 하나만 붙는것.dynamic = 실행 중에 객체를 만들고, 객체별 상태를 가짐
static = 클래스 로딩 시점에 정해지고, 객체 없이 클래스에 붙음
static쓰면 객체 생성할 필요 없이 사용가능. 메서드 등이 클래스에 붙음
static 안 붙이면 객체를 만들 때 생성되는 인스턴스 멤버가 된다
main에 static이 붙어있는 이유도
프로그램 시작 전에 Solution 객체를 만들지 않아도
JVM이 Solution.main()을 바로 호출할 수 있어야 하니까
static 메서드 = 객체 없이 클래스 이름으로 바로 호출
일반 메서드 = 객체를 만든 다음 그 객체를 통해 호출
예:
Math.max(3, 5);
Math.max는 static이라서 new Math()를 안 한다.
반면:
Scanner sc = new Scanner(System.in);
sc.next();
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);
+는 문자열과 변수를 이어 붙인다.
예를 들어 a가 4면:
"a = " + a
결과는:
a = 4
입력 도구 만들기: Scanner sc = new Scanner(System.in);
문자열 입력: sc.next()
정수 입력: sc.nextInt()
출력: System.out.println()
문자열 + 변수 출력: "a = " + a