본문 바로가기
개발공부하며 느낀 인생 공부

자바로 헬로 월드! 만들기, 자바는 자바스크립트와 다른가? (메가테라 2주차 자바 공부 요약)

by 날파리1 2022. 5. 16.

1강 Hello, world

용어 개념 메모 및 요약

  1. Java 프로그램을 만든다 = Java 소스 코드를 작성한다.
  2. 소스코드 (원시 코드) → .java 파일 (텍스트 파잃)
  3. Class (프로그램의 구성 요소) ⇒ .java 파일 하나
  4. 꾸며주거나 설명하는게 앞에 오고, 이름이 뒤에 온다.
  5. “main” 메서드(method)
  6. Boilerplate ⇒ 외워야 한다. → 나중에 이해되지만, 지금은 어렵다.
  7. Greeting → “Hello, world!”
  8. System.out.println() → System.out (출력 부분) + print/ln(line)
  9. “Hello, world!” ⇒ 큰 따옴표 ⇒ 대본 ⇒ 아샬 : “안녕?!”
  10. semi-colon(;) → 안녕, 나는 아샬이야.
  11. 중괄호 ⇒ block(문단)
  12. 컴파일 → .class 파일 → 실행 (JVM)

강의의 목적

자바를 통해 프로그램을 실행시키고 설정한 문구가 printout 되게 한다.

 

강의를 통해 배운 것

1. 자바와 자바 스크립트의 차이

둘은 이름만 비슷하지 관계가 없다.(햄과 햄버거 , 카와 카펫 정도의 사이)

Java와 JavaScript의 다른 점은 무엇입니까?

JavaScript 프로그래밍 언어는 Netscape, Inc.에서 개발했으며, Java 플랫폼의 일부가 아닙니다.

JavaScript는 애플릿 또는 독립형 응용 프로그램을 생성하지 않습니다. 일반적으로 JavaScript는 HTML 문서 내에 위치하며, 단순 HTML에서는 불가능한 다양한 레벨의 대화식 기능을 웹 페이지에서 구현할 수 있습니다.

Java와 JavaScript 사이의 주요 차이점:

  • Java는 OOP 프로그래밍 언어인 반면, Java Script는 OOP 스크립팅 언어입니다.
  • Java는 가상 시스템 또는 브라우저에서 실행되는 응용 프로그램을 작성하는 반면, JavaScript 코드는 브라우저에서만 실행됩니다.
  • Java 코드는 컴파일이 필요하지만, JavaScript 코드는 모두 텍스트입니다.
  • Java 코드와 JavaScript 코드 서로 다른 플러그인을 필요로 합니다.

자바 홈페이지에서 참조

 

2. 터미널에서 각 명령어로 자바 실행시키는 법

cd (change directory)

-d (아마도 디렉토리 설정)

java —class-path=src Hello  

-cp  컴파일 ( 예시 java -cp classes HelloName)

 

public static void main(String[] args) 의 의미

public

제한자 부분으로, 모든 함수의 앞에는 이 함수를 어디에서 접근할 수 있는지 범위를 지정할 수 있습니다.

제한자는 public, private, protected 종류를 지정할 수 있지만 main 함수만은 public 을 지정해야 합니다.

왜?

main 함수는 모든 실행프로그램의 기본이 되는 함수여야 하고

기본이 되는 함수이기 때문에 어디에서나 접근이 가능해야 합니다.

 

private 는 해당 클래스에서만 접근이 가능하고

protected 는 같은 패키지 내에서만 접근이 가능합니다.

 

main 함수의 제한자가 public 이 아니라면 main 함수에 접근하지 못하는 클래스가 있을 수 있고,

이런경우가 발생하면 안되기 때문에 public 으로 선언이 되어야 합니다.

접근제한자 기능
public 모든 곳에서 접근 가능
private 자기 자신 클래스에서만 접근 가능
protected 자기 자신 클래스와 상속된 클래스에서 접근 가능

 

static

자바는 변수나 함수를 메모리에 할당하는 방법이 2가지가 있습니다.

첫번째는 static 영역에 선언하는 것이고, 다른 하나는 heap 영역에 선언(new 연산자)하는 것 입니다.

  static heap
메모리 할당 기준 프로그램 실행되는 순간 연산이 실행되는 순간
메모리 정리 기준
( Garbage Collector )
정리 대상 아님 Garbage Collector 에 의해 정리

 

main 메소드가 heap 영역에 선언되면 어떻게 될까요?

위에서 말했듯이 main 메소드는 프로그램에 없어서는 안되는 기본 함수 입니다.

 

이 함수가 Garbage Collector 에 의해 메모리에서 정리되면 어떻게 될까요?

기본이 되는 함수가 정리되었으니 프로그램이 죽겠죠..

 

따라서 static 으로 선언하여 메모리에 항상 상주하도록 설정합니다.

만약 static 을 사용하지 않으면 아래와 같은 에러가 발생합니다.

 

void

void 는 "함수가 끝날 때 리턴값이 없다" 라는 의미입니다.

 

일반 함수는 void 를 사용해도 되고 int, char 등 다른 타입을 사용해도 문제 없이 동작합니다.

그런데 왜 main 함수만 void 여야 할까요?

 

이유는 위에서도 말했지만 main 함수가 종료되면(혹은 비정상적으로 죽으면) 프로그램이 종료됩니다.

프로그램 자체가 종료되기 때문에, return 값의 의미를 지닐수가 없습니다.

 

반면, 일반함수의 경우 정상적 혹은 비정상적인 경우 리턴값을 변수에 담아 다음 단계를 진행할 수 있죠.

그래서 main 함수는 void 를 의무적으로 사용해야 하고 return 값을 가지기 위해 void 대신 다른 타입을 사용하는 경우 에러가 발생합니다.

 

main

자바의 시작은 main 함수명으로 시작해야 합니다.

이는 규칙이기 때문에 설명을 하기가 애매하네요.

 

String[] args

args 문자열을 배열로 사용하겠다 라는 의미입니다.

args 는 변수명이기 때문에 꼭 args 가 아니어도 상관은 없으나, String[] args 구문 자체를 뺄 수는 없습니다.

참고 블로그

https://mozi.tistory.com/553#:~:text=%EC%9C%84%EC%97%90%EC%84%9C%20%EB%A7%90%ED%96%88%EB%93%AF%EC%9D%B4%20main%20%EB%A9%94%EC%86%8C%EB

 

 

 

댓글