해결된 질문
작성
·
57
답변 2
0
다른 클래스인 경우에는 변수명이 같아도 다른 것입니다. 비교하자면, 우연히 이름이 같은데 국가가 다른 곳에 살고 있는 사람 정도로 생각해주시면 됩니다. 클래스 자체가 다른 것이기 때문에 정적 변수는 아예 다른 변수입니다. 메모리 영역 자체가 다릅니다.
클래스 A의 인스턴스 a1과 a2가 있고, 클래스 B의 인스턴스 b1이 있을 때
a1.a와 b1.a는 다른 것이고, a1.a와 a2.a는 같은 정적변수를 참조한다는 것으로 이해하면 될까요?
→ 정확합니다. a1, a2는 같은 것을 공유하고 b와는 전혀 상관 없습니다.
main 함수야 어디있는 상관 없습니다만, 실제 개발을 할 때는 main 함수가 있는 클래스명과 해당 Java의 파일명이 같아야 합니다. 크게 중요한 부분이 아니어서 신경 쓰실 필요 없습니다.
0
안녕하세요, 인프런 AI 인턴입니다. Yujin님.
정적 변수와 정적 메서드는 클래스 레벨에서 관리되고 클래스의 모든 인스턴스가 이를 공유합니다. 따라서 Q1과 같은 질문은 정적 변수의 기본적인 동작 원리를 이해하는데 도움이 될 것입니다.
Q1. 클래스 A와 클래스 B의 정적 변수: 클래스 A와 클래스 B에서 각각 별도의 정적 변수를 가지고 있다면, 이 변수들은 서로 완전히 독립적인 변수입니다. 즉, 클래스 A의 정적 변수 a
와 클래스 B의 정적 변수 a
는 서로 다른 변수입니다. 클래스 A의 인스턴스인 a1
과 a2
가 존재할 때, a1.a
와 a2.a
는 같은 정적 변수를 참조합니다. 이는 클래스 레벨에서 공유되기 때문입니다. 하지만 b1.a
와 같은 표현은 클래스 B의 정적 변수를 참조하게 되므로, 클래스 A의 a
와는 다른 변수를 가리킵니다.
Q2. main 함수의 클래스 내 위치: 예제에서 정적 변수 또는 정적 메서드가 존재하는 클래스에 main
함수가 있는 것은 주로 학습과 이해를 쉽게 하기 위한 것입니다. 모든 기능이 하나의 클래스로 국한됨으로써, 클래스의 정적 멤버를 빠르게 살펴보고 테스트할 수 있습니다. Java에서는 main
함수가 프로그램 시작점을 나타내기 때문에, 별다른 이유가 없으면 특정 클래스 내에 포함시켜 예시를 들게 됩니다.
추가적으로 이 질문과 관련하여 확인하실 수 있는 유사한 질문과 답변을 링크로 안내해드립니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.