Java에서 인스턴스 변수를 클래스 자체에서 초기화 할 수있는 이유는 무엇입니까? 우리가 그 클래스의 객체를 생성하지 않는다면 인스턴스 변수에 할당 된 메모리가 없다는 것을 의미합니다. 그런 다음 메모리 할당없이 어떻게 초기화 될 수 있습니까?클래스의 초기화
Q
클래스의 초기화
1
A
답변
4
인스턴스 변수를 직접 초기화해도 개체를 만들기 전에 개체 변수를 초기화하지 않습니다. Java가 제공하는 문법적 인 설탕이므로 생성자에서 다른 행을 저장할 수 있습니다. 예를 들어, 다음 코드 :
public class MyClass {
int member = 7;
}
이
public class MyClass {
int member;
public MyClass() {
memeber = 7;
}
}
1
이러한 인스턴스 변수는 실제로 생성자가 실행되기 전에 초기화됩니다.
1
인스턴스 변수에 해당 클래스의 객체를 만들지 않고 메모리 할당 지점이 없습니다. 따라서 생성자 실행 직전에만 객체를 만들면 모든 초기화, init 블록 실행 및 메모리 할당이 수행됩니다.
0
전체 초기화 계층에 equivilant되어 여기 철자를 큰 깁니다.
public class MyClass {
int member = 7;
}
그냥 member
을 초기화하고 미세한 그레인 수준에서 7로 초기 값을 설정하는 런타임에 대한 지침이다하고 귀하의 경우를 들어, 변수는 기본값으로 초기화 한 후 새 값을 할당 . 그것의 원자적인 행동. 그러나 다른 사람들처럼 이것은 생성자 호출 전에 발생한다고 말했다. 그래서 모든 로컬 변수는 런타임이 생성자를 호출하기 전에 초기화됩니다.
public class Auto {
int numberOfDoors = 4;
int numberOfWheels = 4;
//..
}
순서 추적 :
1 만들기 member
같은 변수가 초기화 등
0
가정하자, 우리는 클래스 Auto
이름 전에 마찬가지로 모든 정적이라고 Obj라는 객체는 "new"연산자를 사용합니다 :
Auto fordMustang = new Auto();
2. 메모리가 할당되었습니다.
3. 그런 다음 생성자가 호출됩니다.
클래스 자체의 인스턴스 변수는 구문 식 설탕입니다. 사실, 이러한 변수는 새 객체를 만들 때까지 존재하지 않습니다.
관련 문제
- 1. C++ 클래스의 배열 초기화
- 2. ActiveRecord 클래스의 변수 초기화
- 3. 기본 클래스의 초기화 프로그램
- 4. 클래스의 ofstream 초기화
- 5. 클래스의 변수 초기화
- 6. 클래스의 포인터 초기화
- 7. 클래스의 초기화 순서
- 8. 클래스의 정적 컬 초기화
- 9. 하위 클래스의 ctor로 초기화
- 10. 다른 클래스의 개체 초기화
- 11. Ruby 초기화 클래스의 사전로드
- 12. 클래스의 동적 메모리 배열 초기화
- 13. 다른 하위 클래스의 초기화 목록
- 14. 상자의 클래스의 초기화 목록 질문
- 15. 하위 클래스의 최종 필드 초기화
- 16. 다른 클래스의 초기화 클래스 - C++
- 17. 슈퍼 클래스의 PHP 변수 초기화
- 18. 클래스의 2 차원 배열 초기화
- 19. 파이썬에서 클래스의 2D 배열 초기화
- 20. 상속 된 클래스의 필드 초기화
- 21. 클래스의 정적 struct tm 초기화
- 22. 상속 - 하위 클래스의 변수 초기화
- 23. 템플릿 클래스의 정적 멤버 초기화
- 24. 클래스의 기존 객체가있는 객체의 초기화
- 25. GameScene 클래스의 필수 초기화 메소드
- 26. 클래스의 생성자에서 ifstream 변수 초기화
- 27. WebActivator.PreApplicationStartMethod 클래스의 초기화 순서 정의
- 28. 정적 클래스의 정적 포인터를 초기화
- 29. 템플릿 클래스의 정적 변수 초기화
- 30. C++ 클래스의 정적 멤버 초기화