적절한 예 (프로그램)에서 인스턴스 변수와 정적 변수의 차이점은 무엇입니까?


대답 1:

모두 좋은 예와 설명을했습니다. 나는 하나를 계속할 것입니다 :

인스턴스 변수는 클래스의 각 객체 (인스턴스)의 속성입니다.

정적 변수는 클래스 자체의 속성이며 해당 클래스의 특정 객체 (인스턴스)에 속하지 않습니다.

비교와 대조:

  1. 정적 변수는 클래스 로딩시 초기화됩니다. 객체를 통한 인스턴스. 정적 변수는 클래스 이름을 사용하여 액세스 할 수 있습니다. 예를 들어 변수 개체를 만들어야하며 개체를 통해서만 액세스 할 수 있습니다. 예

구문은 언어마다 다를 수 있습니다

Class_A :: staticVariable // 액세스 가능

ObjClass_A = 새로운 Class_A

ObjClass_A.instanceVariable

3. 정적 변수는 한 번 초기화 할 수 있습니다. 싱글 톤 패턴의 핵심 개념입니다.

4. 정적 변수는 메모리가 할당되지 않기 때문에 추상 클래스에 대한 인터페이스의 일부가 될 수 없습니다.



대답 2:

인스턴스 변수는 클래스의 각 객체 (인스턴스)의 속성입니다.

정적 변수는 클래스 자체의 속성이며 해당 클래스의 특정 객체 (인스턴스)에 속하지 않습니다.

예:

직원 {
개인 정적 int employeeCount = 0;
개인 문자열 empName;
private int empId;

//건설자
공공 직원 (문자열 eName, int eId) {
this.empName = eName;
this.empId = eId;
employeeCount ++;
}

공공 직원 addEmployee (문자열 eName, int eId) {
새 직원 반환 (eName, eId);
}

공공 무효 deleteEmployee (int eId) {
직원 수-;
}

공개 int getEmployeeCount () {
귀국 직원 수;
}
}

이 간단한 예제에서 employeeCount는 현재 직원 수를 제공하는 정적 변수입니다. 직원 수를 추가하거나 삭제하는 경우에만 직원 수가 증가하거나 감소합니다.

empName 및 empId는 직원 객체에 첨부 된 인스턴스 변수이며 각 객체마다 다른 것이 바람직합니다.

따라서 모든 객체에 공통적 인 변수는 정적 변수 여야하며, 그렇지 않으면 인스턴스 변수로 만들어야합니다.



대답 3:

인스턴스 변수는 클래스에 정의 된 멤버 변수이며 각 인스턴스 (해당 클래스의 객체)에는 별도의 복사본이 있습니다. 이것은 객체가 존재하는 한 메모리에 남아 있습니다.

수업 테스트
{
문자열 abc;
}

위의 내용에 액세스하려면 테스트 클래스를 인스턴스화해야합니다

테스트 t = 새로운 테스트 ();
t.abc =”Hello World”.
테스트 t1 = 새로운 테스트 ();
t1.abc = "환영합니다"
테스트 t2 = 새로운 테스트 ();
t2.abc = "Test";

위의 예를 보면, Test, t, t1 및 t2 클래스의 3 개의 객체가 각각 인스턴스 변수 abc의 자체 사본을 가지며 다른 메모리 위치에 저장되어 있습니다.

반면 정적 변수는 객체가 아닌 클래스와 관련이 있습니다. 메모리에 하나의 고정 된 위치가 있으며 클래스 이름을 사용하여 참조됩니다.

수업 테스트
{
문자열 abc;
static int count = 0;
}

이제 count 변수에 액세스하기 위해 Test를 인스턴스화 할 필요가 없습니다. 당신은 간단하게 액세스 할 수 있습니다

Test.count = 1;

원하는 경우 일반적으로 정적 변수가 사용됩니다



대답 4:

자세한 내용과 샘플 코드를 보려면 이러한 유형의 질문에 대해 Google을 검색하십시오.

인스턴스 변수-클래스 내부에서 선언되었지만 메소드 외부에서 선언 된 변수를 인스턴스 변수라고합니다. 정적으로 선언되지 않았습니다.

정적 변수-정적으로 선언 된 변수를 정적 변수라고합니다. 그것은 지역적 일 수 없으며, 어떤 입자 대상이 아니라 전체 학급을위한 것입니다.

수업 테스트 {
int iv = 10; // 인스턴스 변수
static int sv = 100; // 정적 변수
void 메소드 () {
int lv = 50; // 지역 변수
}}

자세한 내용은 Java 변수 유형을 확인하십시오.