02_Hello의 동작 원리

Jiyoon.lee·2023년 11월 17일
0

Java_inflearn

목록 보기
2/25

1. Hello.java 파일 분석하기

public class Hello {
  public static void main(String[] args) {
    System.out.println("Hello!");
  }
}

2. Hello.java의 3가지 중요한 부분

1) 클래스 선언

public class Hello {
    ........
}
  • public class로 정의된 Hello 클래스
  • public class의 클래스 이름과 파일 이름은 같아야 한다. (중요! 대소문자 구분함) : Hello.java

2) 메소드 선언

public static void main(String[] args) {
    ........
}
  • 클래스는 필드(Field)와 메소드(Method)를 가질 수 있다.
  • 프로그램이 실행되려면 반드시 가져야 하는 main메소드
  • Java로 만든 프로그램이 실행되려면 위의 코드(code)를 가지고 있어야 한다. 프로그램 시작점이라고도 말한다.
  • 메인 메소드 안의 내용이 한 줄 한 줄 실행된다.

main함수가 아니라 main메소드라고 말해야 함
소스코드가 컴파일되고 실행되려면 main메소드가 있어야 한다.

3) System클래스의 out. out이 가지고 있는 println()메소드를 이용해 출력하기

System.out.println("Hello!");
  • System.out은 System이 가지고 있는 out이라는 의미
  • out.println은 out이 가지고 있는 println이라는 의미
  • println 뒤에 괄호가 붙어 있는데, 이때 println 메소드라고 한다.
  • out은 괄호가 붙지 않았는데, 이때 out 필드라고 한다.
  • out이 가지고 있는 println 메소드의 역할은 괄호 안의 내용을 화면에 출력하는 것. 이때 큰따옴표 안의 내용이 출력됨. 큰따옴표까지 포함해서 문자열(String)이라고 한다

*대문자로 시작하면 보통 클래스, 괄호가 붙어있으면 메소드, 소문자로 시작하는데 괄호가 안 붙어있으면 필드라고 생각한다.
이것을 예를 들어, 자동차.엔진.시동걸다()라고 표현할 수 있음

3. 컴파일하기

  • 컴파일을 하려면 반드시 javac라는 프로그램이 필요함(javac는 자바 컴파일러를 말함)
javac Hello.java
  • 터미널에서 위의 명령을 입력하면 Hello.java라는 파일을 읽어들여서 컴파일을 하게 된다.

  • 컴파일을 성공하면 Hello.class 파일이 생성되고, 컴파일이 실패하면 오류 메시지가 보여진다.

  • Hello.class파일을 byte파일이라고 한다. Hello.java는 에디터로 열어보면, 사람이 알아들을 수 있는 말로 되어 있지만, Hello.class는 사람이 알아볼 수 없는 말(bytecode)로 되어 있다.

4. JVM으로 실행하기

  • 자바로 작성된 프로그램이라는 것은 컴파일된 클래스. 즉 바이트 파일을 의미한다.
  • 작성된 바이트 파일을 실행할면 JVM이 필요하다. 이 JVM역할을 수행하는 것이 java명령이다.
  • hwp파일을 읽어들이려면 아래한글 워드프로세서가 필요하고, psd파일을 읽어들이려면 포토샵 프로그램이 필요한 것과 같은 원리
  • JVM은 바이트 코드를 읽어들여 실행된다. 바이트 코드를 읽어들여 실행하기 위해서는 다음과 같은 명령을 실행한다. 이때 확장자 이름은 입력하면 안된다.
java Hello
  • java프로그램은 Hello클래스를 한 줄 읽고 해석하고 실행하고, 한 줄 읽고 실행하고를 반복하면서 실행한다. 이렇게 한 줄 한 줄 읽어들이고 해석하면서 실행하는 방식을 인터프리터(interpreter) 방식이라고 한다.

5. 연습문제

  • 나의 이름, 성별, 이메일주소를 출력하는 클래스를 작성하고, 컴파일하고, 실행한다.
>> code Imjiyoon.java
public class Imjiyoon {
  public static void main(String[] args) {
    System.out.println("이지윤");
    System.out.println("여자");
    System.out.println("wls8152296@naver.com");
  }
}
>> javac Imjiyoon.java
>> java Imjiyoon

결과 확인 :
Lee Ji Yoon
Female
wls8152296@naver.com

0개의 댓글