2014-11-23 9 views
8

Q : Java에서 변수의 선언 유형을 변경할 수 있습니까? 예를 들어 Java에서 변수의 선언 유형을 변경할 수 있습니까?

,

public class Tmp{ 
    public static void main(String[] args) { 
    String s = "Foo"; 
    s = null; //same Error results whether this line included or not 
    int s = 3; 
    System.out.println(s); 
    } 
} 

그러나 메시지의 시도 컴파일 결과 :

Error: variable s is already defined in method main(java.lang.String[]) 

이상하게도 다시 선언 변수의 유형은 대화 형 DrJava 세션에서 잘 작동합니다 :

> String s = "Foo" 
> int s = 1 
> s 
1 

무슨 일 이니?

+7

아니, 당신은 변수를 재 선언 할 수 없습니다. – August

+1

DrJava 세션에서 내가 생각할 수있는 것은 동일한 이름의 변수를 선언하고 다른 범위에 배치하는 것 (mprabhat의 답변에서 논의한 것처럼)이거나 충돌을 포착하고 첫 번째 선언을 취소하는 것입니다 . – user3424612

답변

6

나는 자바에서 변수에 대한 선언 형식을 변경할 수 있습니까?

아니요, 컴파일러는 s이 이미 동일한 범위에 있고 유형이 String으로 선언되어 있음을 알고 있습니다.

이전에는 대화 형 인터프리터로 DrJava를 사용 해본 적이 없지만 첫 번째 변수의 범위를 해제하고 새 변수에 선언 된 변수로 대체 할 수 있습니다.

5

범위 내의 변수 이름은 고정되어 있으므로 여러 변수와 동일한 변수를 사용할 수 없습니다. 두 가지 다른 유형으로 동일한 이름을 가질 수 있지만 다른 범위에 속할 수 있습니다. 아래 예제는 두 가지 다른 범위에서 유형을 변경하기 때문에 고려해 보았습니다. 하나의 인스턴스 레벨과 두 번째 시간 메소드 레벨.

public class Test { 
    private String variable = ""; 

    private void init() { 
     int variable = 10; 
    } 
} 
3

번호

그러나이

public class Tmp 
{ 
    public static void main(String[] args) 
    { 
    { 
     String s = "Foo"; 
     s = null; 
    } 
    int s = 3; 
    System.out.println(s); 
    } 
} 

뭔가를 시도 할 수 있습니다하지만 당신이 정말 원하는거야? 변수의 유형이 변경되면 독자에게 혼란을 줄 수 있습니다.

3

동일한 범위 내에서 변수 선언을 변경할 수 없습니다.

자바의 모든 객체이기 때문에, 당신은뿐만 아니라 객체로의를 선언하고 당신이 원하는 무엇이든 될 수 있도록 할 수 있습니다 ...

drjava하면 다음 같은 범위의 행동 내에서 변수를 재 선언 할 수 있습니다 경우

이상합니다. 오류를보고하십시오.

이 코드는 작동합니다 :

Object s; 

s="Foo"; 
System.out.println(s); 
s=3; 
System.out.println(s); 
관련 문제