public class Main {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
// () : 소괄호
// {} : 중괄호
// [] : 대괄호
public class Main {...}
(1) public : 접근 제어자 - 접근 권한을 설정
(2) class : 클래스라 정의하는 것
(3) Main : 클래스 이름 - 첫글자는 대문자로 설정
(4) {...} : 클래스의 내용
(5) 클래스 : 객체의 틀 = (객체를 정의)
(6) 객체 : 하나의 물체처럼 특징와 행동을 가지고 있는 것
(7) 객체의 특징 : 사람이면 MBTI, 키, 몸무게, 성격 등
(8) 객체의 행동 : 먹기, 자기, 공부하기 등
public static void main(String[] args) {...}
(1) public : 접근 제어자 - 접근 권한을 설정
(2) static : 정적 메소드 정의
(3) void : 메소드 출력값 데이터 타입 정의 - 메소드 안에서 밖으로 값을 출력할 때 정의
(4) main : 메소드 이름 - 소문자로만
(5) (String[] args) : 매개변수(input) - 메소드 사용할 때, 메소드 안에 전달할 값이 들어있는 변수로 메소드 안에서만 사용가능
(6) {...} : 메소드 내용 - 보통 동작을 작성
자바 프로젝트(앱)는 제일 먼저 클래스의 main 메소드를 실행시킨다. = JVM의 약속
초기에 항상 드는 의문이 "왜?? 왜 이렇게 해야돼?" 이다. 여기에 대한 답은 "그냥 만든 사람이 그렇게 정했어"이다.
집에서 콩국수를 먹는다고 해보자. 그런데 엄마가 "콩국수에는 소금을 뿌려먹는 거야!" 라고 하면 소금을 뿌려먹어야 한다. 그게 집에서의 약속이자 룰이다.
이처럼 개발도 엄마같은 "사람이 이거는 이렇게 쓰는 거야" 라고 정하기 때문에 그냥 그렇게 하면 된다.
하지만 중요한 것은 왜 그렇게 약속을 정해졌는 지 알아야 한다. 예를 들면, 모든 프로그램의 표준을 제시하기 위해 약속이 정해졌을 수 있기 때문이다. 표준을 지켜야 코드의 유지, 보수가 쉽다.
처음 C언어를 공부할 때, 항상 마지막에 return 0; 을 붙이라고 배웠다. 근데 나는 항상 궁금했다. "왜 return 0; 을 붙여야 되는거지?"
그 당시, 다들 "나중에 되면 알아. 그냥 외워." 라는 반응이었다.
나는 너무 궁금해서 집요한 서치를 통해서 결국 return 0; 이 부모 프로세스에게 해당 프로그램이 무사히 끝났다고 알려주는 하나의 약속이라는 사실을 알게 되었다.
그러면서 약속의 개념과 프로그램의 동작을 어렴풋이 이해하게 되었다.