2017-09-26 1 views
1
class Constr 
{ 
    int a; 

    Constr() 
    { 
     int a=5;; 
    } 

    public void sd() 
    { 
     System.out.println(a); 
    } 

    public static void main() 
    {  
     Constr obj=new Constr(); 
     obj.sd();  
    } 
} 

오지 않을 :우리는 우리가 출력을 얻을이 코드를 실행하면 생성자 Oput이

Constr(){ 
    int a=5; 
} 

여기 { 0 }

+2

'INT의 A = 5;'당신이 생성자에서 변수'A'를 다시 초기화. 행을'a = 5; '로 변경하십시오. 회원 변수 및 해당 범위 찾기 – XtremeBaumer

+5

"빨리 답장"과 같은 것을 추가하지 마십시오. 일반적으로 원하는 효과가 없습니다. – Berger

+0

서식, 문장 부호 및 철자에 더 많은 노력을 기울여야하며, 해당 게시물을 작성하는 것은 독자에게는 불의한 행위입니다. –

답변

0

당신이 대신 외부 만든 하나에 5를 할당하는 새 변수를 만듭니다. 선언문을 제거하고 단지 a=5으로 남겨 둡니다.

1

int 프리미티브의 인스턴스 변수의 기본값은 기본적으로 0 으로 설정됩니다.

는 이제 생성자에서이 변수 a를 재 선언하는 대신 인스턴스 변수에 값을 할당하기 때문에, 당신은 당신의 원하는 출력 (A를 0으로 설정해야합니다 변수 즉, 값을) 받고 있지 않습니다.

대신,이 시도 :

class Constr { 
    int a; 
    Constr() { 
    a = 5; // Assigning the value to the instance variable. 

    } 

    public void sd() { 
    System.out.println(a); 
    } 

    public static void main() { 

    Constr obj = new Constr(); 
    obj.sd(); 

    } 
} 
0

전역 변수와 지역 변수가 다릅니다. 클래스에서 초기화하지 "a"는 전역이며 생성자에서 "a"는 지역 변수입니다. 지역 변수 값을 표시해야하는 경우 5. 다음을 수정했습니다.

클래스 Constr { int a;

Constr() 
{ 
    int a=5; 
    this.a = a; 
} 

public void sd() 
{ 
    System.out.println(a); 
} 

public static void main() 
{  
    Constr obj=new Constr(); 
    obj.sd();  
} 

}

+0

전 세계가 아닙니다. 나는 당신이 Global에 의해 'Instance variable'이 무엇을 의미하는지 짐작합니다. Java는 전역 변수를 지원하지 않습니다. :). – nagendra547

+0

나는 global var가 클래스 자체이고 local var가 메소드 또는 생성자 자신의 var임을 의미한다. – Myo

관련 문제