2014-11-23 13 views
8

S: Java'da bir değişken için bildirim türünü değiştirebilir miyim? eg için Java'da bir değişken için bildirim türünü değiştirebilir miyim?

,

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); 
    } 
} 

Ancak mesajın teşebbüs derleme sonuçları:

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

İşin garibi, yeniden beyan eden bir değişkenin tipi interaktif DrJava oturumda gayet güzel çalışıyor:

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

Neler oluyor?

+7

Hayır, değişkenleri redeclare olamaz. – August

+1

DrJava oturumunuzda olabileceğini düşündüğüm, ya aynı adda bir değişken bildirip, onu farklı bir kapsamda (mprabhat'ın cevabında ele alındığı gibi) ortaya koyduğunuzu görüyor ya da çakışmayı yakalamak ve ilk bildirimi not ediyor . – user3424612

cevap

6

Java bir değişken için deklarasyon türünü değiştirebilir miyim?

Hayır, derleyici s zaten aynı kapsamda mevcut ve tip String beyan olduğunu biliyor.

Daha önce hiç DrJava kullanmamıştım, ancak etkileşimli bir yorumlayıcı olarak, ilk değişkenin kapsamını kaldırabilir ve yeni bildirimde beyan edilenle değiştirebilir.

5

Bir kapsamdaki değişken isimleri sabittir, böylece birden fazla türde aynı değişkeni olamaz. İki farklı türle aynı ada sahip olabilirsiniz ancak farklı bir kapsamda. Örnein altinda, örnegin iki farkli kapsamda degistirildigini düsünüyorsaniz. Bir örnek seviye ve ikinci zaman yöntem seviyesi.

public class Test { 
    private String variable = ""; 

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

sayılı

Ama bu

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

gibi bir şey deneyebilirsiniz Ama gerçekten istiyor musunuz? Bir değişkenin türü değişirse, okuyucular için gerçekten kafa karıştırıcı olabilir.

3

Bir değişkenin bildirimini aynı kapsamda değiştiremezsiniz.

Java her şey bir nesne olduğu için, siz de bir nesne olarak s beyan ve istediğiniz herhangi bir şey haline sağlayabilirsiniz ...

drjava sonra aynı kapsamda kendi davranış içinde değişken redeclare izin veriyorsa

garip. Hatayı bildir.

Bu kod çalışması gerekir:

Object s; 

s="Foo"; 
System.out.println(s); 
s=3; 
System.out.println(s); 
İlgili konular