생활코딩

Coding Everybody

이미 익숙한 메소드

토픽 생활코딩 > 언어 > JAVA 입문 수업 > JAVA - method

수업소개

메소드를 사용하지 않고 자바로 프로그래밍을 하는 것은 불가능합니다. 이미 우리는 메소드를 사용해왔고, 메소드를 만들어왔습니다. 메소드를 공부하기에 앞서서 메소드와 친해지는 시간을 가져보겠습니다.

 

 

 

강의

소스코드

public class FirstMethod {

    public static void main(String[] args) {
		
		System.out.println("Hello Method");
		System.out.println(Math.floor(1.1));

	}

}

 

 

댓글

댓글 본문
  1. Sansol Park
    우리가 자바에서 `main` 메소드를 작성할 때 `public static void main(String[] args)`와 같이 작성하는 이유는 크게 세 가지로 나눌 수 있습니다. 이 설명을 이해하기 위해서, 먼저 메소드와 클래스, 그리고 `static` 키워드의 의미를 알아야 합니다.

    ### 1. `public`
    - `public`은 접근 제어자(Access Modifier)입니다. `public`으로 지정된 메소드는 다른 클래스나 패키지에서도 접근할 수 있습니다. `main` 메소드는 프로그램이 시작될 때 운영 체제가 호출하는 메소드이기 때문에, 어디서든지 접근할 수 있어야 합니다. 따라서 `main` 메소드는 `public`이어야 합니다.

    ### 2. `static`
    - `static`은 클래스 메소드로 선언된다는 의미입니다. 즉, 인스턴스(객체)를 생성하지 않고도 클래스 이름으로 직접 호출할 수 있는 메소드입니다.

    예를 들어, `FirstMethod` 클래스에서 `main` 메소드를 호출할 때, `FirstMethod` 클래스의 객체를 생성하지 않고도 바로 실행할 수 있습니다. 이는 프로그램 시작 시점에 `main` 메소드를 실행하기 위해 객체가 필요하지 않도록 설계된 것입니다.

    반면, `static`이 붙지 않은 메소드는 객체를 생성해야만 사용할 수 있습니다. 예를 들어, 인스턴스 메소드는 `FirstMethod` 클래스의 객체가 먼저 생성된 이후에 호출할 수 있는 메소드입니다.

    ### 3. `void main(String[] args)`
    - `void`는 메소드가 값을 반환하지 않는다는 뜻입니다. `main` 메소드는 프로그램의 진입점 역할만 하므로, 반환값이 필요하지 않기에 `void`로 선언합니다.

    - `String[] args`는 프로그램이 실행될 때 외부에서 전달받을 수 있는 인자(arguments)를 의미합니다. 예를 들어, 명령행에서 프로그램을 실행하면서 인자를 전달할 때 그 값들을 배열 형태로 받습니다.

    ### 인스턴스를 만들면 왜 `static`을 안 붙일까?

    클래스 내에서 인스턴스 메소드를 만들 때는 `static`을 붙이지 않는 경우가 많습니다. 이는 인스턴스 메소드는 해당 클래스의 객체를 통해 호출되기 때문입니다. 인스턴스 메소드가 객체와 연관된 동작을 수행하도록 설계된 반면, `static` 메소드는 클래스와 연관된 동작을 수행합니다.

    #### 예시:

    ```java
    public class MyClass {
    public void instanceMethod() {
    System.out.println("This is an instance method.");
    }

    public static void staticMethod() {
    System.out.println("This is a static method.");
    }
    }

    public class Main {
    public static void main(String[] args) {
    // static 메소드는 클래스 이름으로 호출 가능
    MyClass.staticMethod();

    // 인스턴스 메소드는 객체 생성 후 호출
    MyClass myObject = new MyClass();
    myObject.instanceMethod();
    }
    }
    ```

    위 예시에서 `staticMethod()`는 `MyClass`라는 클래스 이름으로 바로 호출할 수 있지만, `instanceMethod()`는 `MyClass`의 인스턴스를 생성한 후에 호출할 수 있습니다.

    이처럼 인스턴스 메소드는 특정 객체의 상태와 관련된 작업을 수행할 때 주로 사용되며, `static` 메소드는 전체 클래스와 관련된 작업을 수행할 때 사용됩니다.

    ### 결론
    - `main` 메소드가 `static`으로 선언되는 이유는 프로그램이 시작될 때 인스턴스 없이 호출할 수 있도록 하기 위함입니다.
    - 인스턴스 메소드는 객체와 관련된 동작을 수행하기 때문에 `static`이 필요하지 않으며, 객체 생성 후에 사용됩니다.
    대화보기
    • 240527
    • 당당
      2023.04.19
    • labis98
      20230202 완료
    • 자바뿌시기
      23.01.04
    • Min Jupiter
      221227
    • 보통사람 박코딩
      할수있다
    • 자바자바
      public class
      public static void main (String [] args);
      => 이미 여기에 메소드가 포함되어 있음
      class 안에 main이라는 메소드가 있고 그것은 String타입의 변수들을 배열로써 가진다라는 성격이 있음
      => 그래서 우리가 run configuration을 쓰면 string 타입으로만 출력이 되는구나, 그래서 스트링을 더블로 바꿔줘야 작동하는 경우가 생기는구나
      근데 왜 인스턴스를 만들면 static을 안 붙이지?
    • 후토마끼
      22.10.11
    • whoami
      9.12 완료
    • economin
      수강완료
    • public static void main(~~~~) {

      }
      이것역시 main이라는 메소드이다
    • 코딩이취미다
      클래스 -> main 메소드
    • 열정jk
      220220 감사합니다
    • 나연
      2022년 2월 10일 (목) 완료

      ```java
      // 메인 메소드
      public static void main(String[] args) {
      // 본문
      System.out.println("Hello, Method!");
      System.out.println(Math.floor(1.1));

      }
      ```

      자바 애플리케이션을 만들 때는 클래스를 만들어야 하고 그 클래스를 실행할 때는 반드시 약속된 이름인 `main`이라고 하는 특수한 메소드를 정의해 놓으면 자바는 클래스 실행 시 `main` 메소드를 실행하도록 약속되어 있음
    • 김보노
      22-01-22
    • 초보자바
      22-01-13
    • 주간식당메뉴
      21.11.01.
    • 성치
      2021-10-24일 완료
    • won4175
      2021.10.18
    • 3초컷
      1005 메소드란 함수이다. 함수는 코드의 재사용성을 극대화시키기 위해 사용한다.
    • 2021.08.28 완료
    • kylim
      2021.08.18 완료
    • labis98
      20210811 completed!!!
    • 이마누
      완료
    • super1Nova
      210807
    • Jaemin Lim
      2021.07.24
    • B=loom
      2021.07.17
    • Docta_yangban
      자바 서적들을 볼 때마다 Method bla-bla 하고 나오는 내용들에서 항상 막혔었는데
      Method = Function이라 생각하니 이해가 되었습니다.
    • 초딩 개발자
      2021/06/22
    • 도공우승9
      ok
    • jeisyoon
      2021.05.01 이미 익숙한 Method - OK
    • Sunho Kim
      완료(2021.04.17.토)
    • anya422
      done!
    • 레이
      21.04.11
    • chimhyangmoo
      21.04.08
    • 김우중
      감사합니다
    • boat
      감사합니다
    • oyuiw
      20201213
    • 실리콘밸리로가자
      Dec/03/2020, Thursday
    • 안광민
      완료
    • thebluerat
      감사합니다.
    • hyuna lee
      감사합니다.
    • 뉸찡
      2020.04.02 완료 감사합니다
    • 빙빙
      학원수업듣다가 이해안되서 들어왔는데 너무쉽게설명 잘해주셔서 너무기분좋아요!!!
    • yyrr
      완료
    • 임지수
      2020.01.31 완료
    • 라또마니
      감사합니다. 이걸로 누적봤어요 200번 돌파 했네요~~
    • 이기호
      감사합니다!^^
    • 쑤우
      수강완료. 감사합니다.