public static void main(String[] args)
메인함수를 실행할 때만 저 코드가 뜨는 줄 알았는데
수업을 들으면서 간간히 void나 public, static을 따로따로 쓰는 경우를 발견하게 되어서
확실하게 이해를 하고 넘어가려고 한다.........................................
자바스크립트에는 본 적이 없던 걸 마주칠 때마다 속이 깝깝해진다
테스트를 위해
zMyTest package 안에 TestJava 클래스를 생성해준다.
(package와 class 모두 ctrl + N 을 눌러서 뜨는 검색창에 입력하면 빠르게 생성 가능하다)
alt + v 를 쳐서 main 함수도 함께 선언해줄 수 있다.
(수동으로 체크해도 되지만 단축키가 편해지니까 이젠 단축키로 전부 다 해결해버리고 싶어지더라🫡)
package zMyTest;
public class TestJava {
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
JAVA는 어플리캐이션이 실행되면 제일 먼저 main 메소드를 실행한다고 한다.
결국 여러 가지 class를 선언해도, main 메소드가 선언된 것을 가장 먼저 실행하는 것이다.
1. public
접근제어자
접근제어자는 외부에서 접근할 수 있는지 없는지를 정하는 제약어?인데
public 말고도 여러 가지가 있다.
참고🔗: 접근제어 수업 메모
제약이 강한 순서대로
private → protected → public 이 있으며
default 는 클래스 내부와 동일 패키지에서 접근이 가능하다.
결국 public 은 어느 곳에서든 해당 객체를 참조할 수 있다 는 의미이다.
자바는 메인 메소드를 가장 먼저 실행하기 때문에
메인 메소드에서 정의만 하고 다른 곳에서 호출을 하는 방식으로는 사용하지 않는? 것이 좋다.
(가능한지 불가능한지는 모르겠다. 아마 불가능할듯)
2. static
static은 해당 함수가 정적인 함수임을 의미하는 것인데,
static으로 함수 또는 클래스를 선언했을 때, 해당 객체는 자바가 컴파일 되는 순간 정의된다.
객체의 정의가 자바가 컴파일 된 이후 진행되기 때문에
static 객체 안에서 static이 아닌 객체를 호출하는 것은 불가능하다. (아직 정의되지 않은 객체를 먼저 호출할 수 없기 때문)
공용은 절대 개인 단위의 객체를 부를 수 없다!!!!!!!!!!!!! 메모.
3. void
리턴되는 값이 없는 것을 의미한다.
실행만 되고 따로 return 할 수 있는 값이 없다?는 것 같은데,
void 가 들어갈 곳에 int 나 String이 들어갈 수 있는 것을 보면
어떤 값을 반환할 것인지를 선언하는 위치라는 것을 알 수 있다.
void 는 해당 함수가 종료된 후에 호출한 부분으로 이동하기만 한다.
결국 메인 메소드는 자바 어플리케이션을 실행했을 때 가장 먼저 동작하고,
어느 객체에서든지 접근할 수 있으며,
자바가 컴파일 되는 순간 정의해서 돌려주는 (그러나 리턴값이 없는) 함수임을 알 수 있다.
11일차 수업에서 void eat() 함수를 작성했었는데,
위의 내용대로 보자면 결국 eat()는 리턴하는 값이 없고 단순 실행만 하는 함수라는 뜻이구나~, 라는 걸 알게 되었다.
@Override
void eat() {
super.eat();
MyUtil.p("나 " + this.name + "은(는) 저녁 식사를 합니다.");
MyUtil.p("아이스크림 먹기");
MyUtil.p("불량식품 아폴론 먹기");
}
아 속 시원해!!!!
'📁 Language > ☕ JAVA' 카테고리의 다른 글
[JAVA] 생성자 (constructor) (1) | 2024.03.03 |
---|---|
[JAVA] 클래스 (1) | 2024.02.28 |
[JAVA] 배열 (0) | 2024.02.20 |
[JAVA] 자바 문자열(String) 함수 (0) | 2024.02.15 |
[JAVA] 데이터 형 변환 (묵시적, 명시적) (0) | 2024.02.15 |