Java에서 'public static void'는 무엇을 의미합니까?


149

public static voidJava에서 무엇을 의미합니까?

나는 배우는 과정에 있습니다. 내가 일하고있는 책의 모든 예제에서 public static void사용되거나 생성 된 방법보다 먼저 나옵니다. 이것은 무엇을 의미 하는가?

답변:


230

완전히 다른 세 가지입니다.

public는 메소드가 표시되고 다른 유형의 다른 객체에서 호출 될 수 있음을 의미합니다. 다른 대안은 private, protected, packagepackage-private. 자세한 내용은 여기 를 참조하십시오.

static메서드가 해당 클래스의 특정 인스턴스 (객체)가 아니라 클래스와 연결되어 있음을 의미합니다. 즉, 클래스의 객체를 만들지 않고 정적 메서드를 호출 할 수 있습니다.

void메서드에 반환 값이 없음을 의미합니다. 메소드가를 반환하면 대신 int에을 쓸 int것입니다 void.

이 세 가지의 조합은 main대부분의 자습서에 포함될 방법 에서 가장 일반적으로 나타 납니다.


12
질문자가 아직 배우고 있기 때문에 이러한 키워드의 순서도 중요합니다. 우선 개질제 ( public, static, private다음 등) (리턴 타입 void이 경우).
Pindatjuh

1
@ markbyres ok 나는 당신이 대답한다는 것을 이해합니다. 메인 메소드는 정적이어야한다는 것을 알고 있지만 왜 공개인지 알 수 없습니다 ?? 그 특별한 이유가 있습니까 ??
hardik

9
Java 런타임 환경은 기본 메소드를 호출하여 응용 프로그램을 시작해야합니다. 비공개 일 때는 그렇게 할 수 없었습니다.
Philipp

44

세 단어는 직교 의미를 가지고 있습니다.

public 이 메소드는 다른 패키지의 클래스에서 메소드를 볼 수 있음을 의미합니다.

static메서드가 특정 인스턴스에 연결되지 않았으며 " this" 가 없음을 의미 합니다. 그것은 다소 기능입니다.

void반환 유형입니다. "이 메소드는 아무것도 리턴하지 않음"을 의미합니다.


22

공개 키워드는 프로그래머가 클래스 멤버의 가시성을 제어 할 수 있습니다 액세스 지정자입니다. 클래스 멤버 앞에 public이 있으면 해당 멤버는 선언 된 클래스 외부의 코드로 액세스 할 수 있습니다. (public의 반대는 private이므로 클래스 외부에서 정의 된 코드에서 멤버를 사용할 수 없습니다.)

이 경우 main( )프로그램이 시작될 때 클래스 외부의 코드에 의해 호출되어야하므로 public으로 선언해야합니다.

static 키워드 main( )는 클래스의 특정 인스턴스를 인스턴스화하지 않고도 호출 할 수 있습니다. 이것은 main( )오브젝트가 작성되기 전에 Java 인터프리터에 의해 호출 되므로 필요 합니다.

키워드 void는 단순히 main( )값을 반환하지 않는 컴파일러를 알려줍니다 . 보시다시피, 메소드는 값을 반환 할 수도 있습니다.


18

그것은 의미합니다 :

  • public -어디서나 호출 가능
  • static -객체 상태가 없으므로 객체를 인스턴스화하지 않고 호출 할 수 있습니다
  • void -아무것도 반환하지 않습니다

리턴이 없다는 것은 많은 일을하지 않는다는 것을 의미한다고 생각하지만, 예를 들어 데이터베이스에 물건을 저장하고있을 수 있습니다.


4

세 가지를 의미합니다.

먼저 public 는 다른 객체가 액세스 할 수 있음을 의미합니다.

static 함수가 호출되기 전에 클래스가 상주하는 클래스를 먼저 인스턴스화 할 필요가 없음을 의미합니다.

void 함수가 값을 반환하지 않음을 의미합니다.

당신은 단지 배우기 때문에 클래스에 대해 배울 때까지 처음 두 개를 너무 걱정하지 마십시오. 세 번째는 함수를 쓰기 시작할 때까지 중요하지 않습니다 (메인이 아닌).

프로그램을 배우면서 얻을 수있는 조언 중 가장 잘 이해하지 못하는 부분은 걱정하지 않아도됩니다. 기본 사항에 대한 광범위한 개요를 얻은 다음 세부 사항에 대해 걱정하십시오. 그 이유는 public static void첫 번째 프로그램에서 (예를 들어 ) 몇 가지를 사용해야하기 때문에 다른 많은 것들에 대해 먼저 가르치지 않으면 실제로 잘 설명 할 수 없기 때문입니다. 따라서 현재로서는 그것이 끝났음을 인정하고 계속 진행하십시오. 당신은 그것들을 곧 이해할 것입니다.


3

일반적인 최상위 클래스를 고려하십시오. 공개 및 수정 자 액세스 수정 자만 최상위 수준에서 사용할 수 있으므로 공개 또는 액세스 수정자가 전혀 표시되지 않습니다.

정적은 실제 객체를 최상위 레벨에 만들 필요가 없기 때문에 사용되지만 때로는 정적을 보거나 사용하지 않을 수도 있습니다. 정적을 포함하지 않는 다른 이유가 있습니다. 그러나 이것은 최상위 수준의 전형적인 것입니다.)

void일반적으로 최상위 (클래스)에서 값을 반환하지 않기 때문에 사용됩니다. (때로는 NULLvoid 이외의 값을 반환하고 싶을 때 특히 void를 선언 한 경우 일부 값을 할당하는 최상위 수준에서 객체를 초기화 한 경우 void가 항상 사용되는 것은 아닙니다.)

면책 조항 : 나는 초보자이기 때문에이 답변이 어떤 식 으로든 잘못되면 나를 교수형하지 마십시오. 낮에는 개발자가 아닌 기술 채용 담당자입니다. 코딩은 나의 취미입니다. 또한 나는 건설적인 비판에 항상 열려 있고 배우기를 좋아하므로 오류를 지적 해 주시기 바랍니다.


2
  • public 클래스 / 객체 또는 패키지 또는 클래스 외부에서 클래스에 액세스 할 수 있음을 의미합니다.
  • static 문장 블록이 1 회만 사용 된 상수를 의미
  • void 반환 유형이 없음을 의미

6
이 질문은 적절하게 다루어졌으며, 중복 정보로 이전 질문에 대답하는 대신 새로운 질문에 대답하십시오. 감사.
Kev

코끼리에 대해 설명하는 것과 같습니다. 사람들은 그것이 어디에 서 있는지에 따라 설명하려고 노력합니다. 위의 모든 답변에 만족하지만 "책을 자바로 구매하십시오"라고 말하는 사람이 있는지 궁금합니다.
술룽 누그로 호

2

Public -클래스 (프로그램)를 다른 클래스에서 사용할 수 있음을 의미합니다.

Static-수업을 만듭니다. 변수 및 메소드에 적용하여 클래스의 특정 인스턴스에 대해 로컬이 아닌 클래스 메소드 / 변수를 만들 수도 있습니다.

Void-이것은 클래스 처리가 완료 될 때 제품이 리턴되지 않음을 의미합니다. 이것을 메인 클래스에 반환 값을 제공하는 도우미 클래스와 비교하면 함수처럼 작동합니다. 이들은 선언에 무효가 없습니다.


0

static메서드가 해당 클래스의 특정 인스턴스 (객체)가 아니라 클래스와 연결되어 있음을 의미합니다. 즉, 클래스의 객체를 만들지 않고 정적 메서드를 호출 할 수 있습니다. static키워드 를 사용하기 때문에 main()첫 번째로 호출 할 메소드가 있습니다. static인스턴스를 만들 때 객체가 필요하지 않습니다. 따라서 객체를 만들기 main( )전에 Java 인터프리터가 호출합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.