흥미로운 자바 퍼즐 - 인스턴스 이니셜라이저
Java의 인스턴스 초기화 프로그램 테스트
문제
아래 Java 코드의 출력이 무엇인지 추측할 수 있습니까?
암호
public class InstanceInitializerTest
{
public static void main(String[] args)
{
{
System.out.println("Feathers");
}
}
{
System.out.println("Snowy");
}
}
옵션
가능한 출력 목록은 다음과 같습니다.
1. Snowy
2. Snowy
Feathers
3. Feathers
4. Feathers
Snowy
해결책
정답은
(3) Feathers
설명
인스턴스 이니셜라이저는 한 쌍의 중괄호({
및 }
) 사이에 정의된 코드 블록입니다. 메서드 내부에 있더라도 실제로 중요하지 않으며 실제로 계산됩니다.
위의 프로그램에서 프로그램을 실행하면 main()
메서드가 실행되고 그 안에 인스턴스 이니셜라이저가 있고 실행됩니다. main()
메서드 내에서 실행 가능한 유일한 문장이었기 때문에 프로그램 실행은 거기서 끝났다.
Snowy
를 출력하는 다른 인스턴스 초기화 프로그램이 실행되지 않은 이유가 궁금할 것입니다. 보시다시피 두 번째 인스턴스 이니셜라이저는 메서드에 바인딩되지 않고 대신 클래스에 바인딩되었습니다. 클래스를 시작하지 않았기 때문에 클래스 수준의 인스턴스 이니셜라이저가 호출되지 않았습니다.
두뇌를 위한 일
main()
메서드 내부에서 클래스를 인스턴스화하고 출력의 변경 사항을 확인하십시오.
(2) Snowy , Feathers
메서드 내부의 인스턴스 이니셜라이저 이전 또는 이후에 클래스를 인스턴스화하는 위치에 따라 출력을 (4) Feathers, Snowy
또는 main()
로 얻을 수 있습니다.
Remember, the order of the initializers matter a lot :)
Reference
이 문제에 관하여(흥미로운 자바 퍼즐 - 인스턴스 이니셜라이저), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/itsraghz/interesting-java-puzzle-instance-initializers-5hd3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
public class InstanceInitializerTest
{
public static void main(String[] args)
{
{
System.out.println("Feathers");
}
}
{
System.out.println("Snowy");
}
}
1. Snowy
2. Snowy
Feathers
3. Feathers
4. Feathers
Snowy
Remember, the order of the initializers matter a lot :)
Reference
이 문제에 관하여(흥미로운 자바 퍼즐 - 인스턴스 이니셜라이저), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/itsraghz/interesting-java-puzzle-instance-initializers-5hd3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)