도서/자바의 신

[도서/자바의 신] #2 Hello God Of Java

yulee_to 2022. 12. 18. 00:05

자바의 신

✔️이 글은 [자바의 신 - 이상민 지음] 도서를 바탕으로 정리한 글입니다. 


사용한 노트북은 MacOs M1이다.

HelloGodOfJava 

자바의 경우 코드 작성 -> 컴파일 -> 실행 순서로 프로그래밍된다. 

1. 터미널 창에서 HelloGodOfJava.java 파일을 만들고 안에 코드를 입력한 후 저장(코드작성) 

2. javac HelloGodOfJava.java 명령어 실행 (컴파일)

3. java HelloGodOfJava 명령어 실행 (실행)

 

각종 에러 

Exception in thread "main" java.lang.NoSuchMethodError: main // 메인 함수가 없을 때
java.lang.NoClassDefFoundError // 일치하는 클래스가 존재하지 않을 때

자바의 컴파일 과정

(소스)-> 컴파일러 -(바이트 코드)-> 디스크 -(바이트 코드)-> JVM -(기계어)-> 운영체제

텍스트로된 소스코드(.java)를 컴파일러가 바이트 코드(.class)로 바꿔 디스크에 저장한다. 디스크에 저장된 .class 코드를 JVM이 읽어서 운영체제에서 실행된다. 자바의 컴파일 프로그램은 javac.exe이다. 

바이너리, 바이트 코드는 2진법으로 이루어져 있는 코드로 사람이 읽을 수 없다. 

 

main 메소드를 만들자

실행을 목적으로 하는 모든 자바 클래스는 main() 메소드가 있어야 한다. 자바 프로그램의 진입점(시작점)인 main은 다음과 같다. 

public static void main (String[] args) {
}
  • public : 접근 제어자
  • static : 객체를 생성하지 않아도 호출할 수 있는 키워드
  • void : return할 값이 없다는 의미
  • main : 메소드 이름
  • String[] args : 매개변수로 반드시 String 배열 형태여야 하지만 이름을 변경해줘도 됨

System.out.println()과 System.out.print()

  • System.out.println() : 소괄호 안의 데이터를 출력하고 줄바꿈을 해준다.
  • System.out.print() : 소괄호 안의 데이터를 출력하고 줄바꿈은 해주지 않는다. 

주석(Comment) 처리하기

주석 처리가 된 문장은 컴파일할 때 제외된다. 

  • 한줄 주석 - // 뒤에 주석처리할 내용을 적어줌
//
  • 블록 주석 : 여러줄 한꺼번에 주석처리
/*
*/
  • 문서용 주석(documentation comment) - 클래스 선언 바로 앞이나, 메소드 선언 바로 앞에 있으면 문서용 주석으로 인식되어 처리됨
/**
*/

메소드를 직접 만들어보자

메소드를 6가지로 나누면

  • 제어자 (modifier) : main() 메소드에 있는 public static과 같은 메소드의 특성을 정하는 부분
  • 리턴 타입 (return type) : 메소드가 끝났을 때 돌려주는 타입
  • 메소드 이름 (method name)
  • 매개 변수 목록 (parameter list) : 소괄호 안에 있는 매개 변수들
  • 예외 목록 (exception list) : 메소드 소괄호가 끝나는 부분과 중괄호가 시작되는 부분 사이에 들어가는 예외 목록
  • 메소드 내용 (method body) : 중괄호 안에 들어가는 내용

메소드를 구성하는 6가지 중에서 리턴 타입, 메소드 이름, 메소드 내용은 반드시 정의해줘야 한다. 


정리해봅시다

1. main() 메소드의 메소드 이름 앞에는 어떤 예약어들이 들어 가나요?

public static void

2. main() 메소드의 매개 변수에는 어떤 값이 들어가나요?

String[] args

3. 만약 여러분들이 만든 클래스에 main() 메소드가 없다면, java 명령어로 그 클래스를 수행할 수 있나요?

NO

4. System.out.println() 메소드는 어떤 용도로 사용되나요?

데이터 출력

5. System.out.print() 메소드는 System.out.println() 메소드와 어떤 차이가 있나요?

System.out.print()는 줄바꿈이 없다. 

6. //은 무엇을 하는데 사용하는 기호인가요?

한 줄만 주석처리 된다. 

7. /*로 시작하고, */로 끝나는 사이에 있는 소스들은 어떻게 되나요?

여러줄이 한꺼번에 주석처리되고 컴파일할 때 무시된다.  

8. 메소드를 선언할 때 반드시 꼭 있어야 하는 세 가지는 무엇인가요?

리턴타입, 메소드이름, 메소드내용

 

728x90