김갱환
맨땅에 코딩
김갱환
전체 방문자
오늘
어제
  • 분류 전체보기 (239)
    • ⁂ 맨땅에 코딩 (11)
      • : Story (3)
      • : MiniProject 'MyWeb' (1)
      • : Final Project (5)
      • : Josa-Moa 한국어 조사 처리 프로젝트 (1)
    • —————Frontend——————————————.. (0)
    • ⁂ HTML (10)
      • : 기본 익히기 (10)
    • ⁂ CSS (15)
      • : 기본 익히기 (15)
    • ⁂ Java Script (32)
      • : 기본 익히기 (28)
      • : 자바스크립트 라이브러리 (1)
      • : 연습 문제 (3)
    • ⁂ jQuery (11)
      • : 기본 익히기 (11)
    • ⁂ Bootstrap (3)
      • : 기본 익히기 (3)
    • ⁂ TailWind CSS (1)
    • ⁂ AJAX (5)
      • : 기본 익히기 (5)
    • ⁂ Vue.js (3)
      • : 기본 익히기 (3)
    • —————DB : Data Base————————.. (0)
    • ⁂ Oracle DB (27)
      • : 기본 익히기 (24)
      • : 연습 문제 (3)
    • ⁂ MyBatis Framework (15)
      • : 기본 익히기 (15)
    • —————Backend———————————————.. (0)
    • ⁂ Java (62)
      • : 기본 익히기 (42)
      • : JDBC - Java DataBase Conn.. (4)
      • : Crawling (2)
      • : 독학으로 공부하기(과거) (11)
      • : 연습문제 (3)
    • ——————Web————————————————— (0)
    • ⁂ JSP (28)
      • : 기본 익히기 (28)
    • ⁂ Spring FrameWork (15)
      • : Legacy Project (1)
      • : 기본 익히기(Boot 기반) (14)
    • ——————————————————————— (0)
    • ⁂ Error Note (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 코딩공부 #자바공부
  • 객체지향프로그래밍
  • web.xml수정
  • 비트연산자 #코딩공부 #자바공부 #코딩 #자바 #프로그래밍 #개발자
  • 코딩 #코딩공부 #프론트앤드 #백앤드 #풀스택개발자
  • 프론트앤드
  • 풀스택
  • HTML공부
  • ErrorPage
  • http에러메세지
  • 연산자 #기본연산자 #코딩 #자바 #독학 #자바공부 #자바연산자
  • 자바공부
  • httperror
  • 코딩공부 #코딩 #자바 #자바독학 #자바공부 #개발자 #프론트앤드 #백앤드 #풀스택
  • 코딩 #코딩공부 #상수 #리터럴 #형변환 #개발자 #자바 #자바공부 #자바독학
  • 자바
  • 개발자
  • 백앤드
  • 코딩공부
  • 코딩

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
김갱환

맨땅에 코딩

⁂ Java/: 기본 익히기

[JAVA] #4-4 메인(main)

2022. 9. 7. 18:04

1. 메인 함수

 

 자바를 작업하면 항상 등장하는 main() 함수의 정체에 대해 알아보자.

public static void main(String[] args) {}

 지금까지의 흐름을 통해 우리는 자바 코드를 작성할 때마다 가장 위에 쓰게 되는 코드 4가지 중 2가지를 알게 되었다.

 void(리턴값이 없다), 그리고 main() 은 무엇인진 모르겠지만 함수이며 자료형이 String이라는 것!

 (나머지 두 개도 차차 알아가자)

 

 

 2. 자바가상머신(Java Virtual Machine; javaw.exe)

 

 우리가 이클립스로 자바 코드를 F11을 눌러서 실행시킬 때,

 우린 단 한번도 main()함수를 호출한 적이 없다.

 이는 자바를 설치할 때 함께 설치된 자바가상머신이 main()함수 안에 있는 코드를 동작시켜주기 때문이다.

 

 자바의 슬로건은 이 문장이다.

 '한 번 작성하면, 어디서든 작동한다(write one, run anywhere)'.

 

 이 문장이 어떤 뜻이냐하면 리눅스, 매킨토시, 윈도우와 같은 다양한 플랫폼에 개별적인 실행 파일을 따로따로 만들지 않아도 된다는 뜻이다.

 원래는 각 플랫폼마다 실행될 수 있도록 플랫폼용 컴파일러를 따로 준비해야했었던 과거의 프로그램들과는 달리 자바는 자바 자체의 컴파일러를 통해 어떤 플랫폼에서도 프로그램이 실행될 수 있도록 도와주는 것이다.

 이것을 가능하게 하는 것이 바로 바이트 코드(Example.class)인데, 바이트 코드는 완벽한 실행 파일이 아닌 중간 기계어이다.

 

 "완벽하지 않으면 실행이 안되잖아요!!"

 맞다. 이 바이트 코드는 한 가지 과정을 더 거쳐야 완벽한 실행 파일로 변환된다.

 바로 각 운영 체제의 자바 가상 머신(Jave Virtual Machine ; JVM)을 거치는 것이다.

 그러니까 이전에는 각 플랫폼마다의 실행 파일을 따로 만들어야했는데, 이제는 자바를 통해 .class파일을 만들기만 하면 각 운영 체제에 설치된 자바 가상 머신을 통해 프로그램 실행이 가능하게 해주는 것이다.

 

 이렇게 자바에서 프로그램을 실행을 할 때 가상머신은 main()함수를 가장 먼저 호출하고 그 이후를 실행한다.

 

 

3. 패키지의 구분

 

 당연하게도 패키지 안에 패키지를 만들 수 있다.

 그리고 자바에서 패키지의 구분은 .(온점) 으로 한다.

 위의 net.bbs는 net이라는 패키지 안에 있는 bbs 패키지란 뜻이다.

 

 

4. 패키지 없이 클래스 만들고 main() 함수의 args[] 배열 내용 확인해보기

 

 이번엔 패키지가 없는 클래스를 만들어보려한다.

 이대로 Finish를 눌러서 생성시키면 MainTest.java 파일이 default package에 들어가있는 모습을 확인할 수 있다.

 

 이제 출력된 화면 안에서 main() 함수 안에 있는 args 라는 배열을 확인해보려 한다.

 

 여기서 args는 argument string의 약자로 전달문자란 뜻이다.

 그 후 for문을 사용하여 args 배열 안에 있는 내용을 출력시키는 코드를 적었다.

 여기서부터는 명령 프롬프트를 사용하여 확인을 해야 한다.

 명령 프롬프트로 가보자.

 

 

 우선 자바의 파일 경로를 따라 왔다.

 그 후 dir을 입력하여 이 안에 MainTest.java 파일이 있는지 확인해보았다.

잘 존재하고 있다

 

 이제 java 파일을 javac 명령어를 사용하여 컴파일 해주었다.

 그리고 dir을 한번 더 입력하면 .class 파일이 생성된 것을 확인할 수 있다.

인코딩이 맞지 않아서 강제로 인코딩을 해주었다

 

 그 후 MainTest.class 파일을 불러와서 전달값을 넣어주었다.

 

 그러자 Seoul, Jeju, Busan이라는 값들이 출력이 되는 것을 볼 수 있다.

 이로써 .class 파일을 실행할 때 전달값은 main() 함수의 매개변수가 받는다는 것을 눈으로 확인할 수 있다.

 

 이렇게 main() 함수란 자바프로그램이 시작될 때 가장 먼저 실행되는 메서드임을 기억하면 된다.

저작자표시 비영리 동일조건 (새창열림)

'⁂ Java > : 기본 익히기' 카테고리의 다른 글

[JAVA] #5-2 New 연산자 - 참조 자료형을 이해해보자  (0) 2022.09.08
[JAVA] #5-1 클래스(Class)  (2) 2022.09.08
[JAVA] #4-3 자바의 함수 호출 방식  (0) 2022.09.07
[JAVA] #4-2 오버로드(Overload)  (0) 2022.09.07
[JAVA] #4-1 메소드(Method)  (0) 2022.09.07
    '⁂ Java/: 기본 익히기' 카테고리의 다른 글
    • [JAVA] #5-2 New 연산자 - 참조 자료형을 이해해보자
    • [JAVA] #5-1 클래스(Class)
    • [JAVA] #4-3 자바의 함수 호출 방식
    • [JAVA] #4-2 오버로드(Overload)
    김갱환
    김갱환
    코딩의 코자도 모르는 이의 공부 기록장

    티스토리툴바