
Originariamente inviata da
Shiroga
Buon giorno vorrei un piccolo chiarimento su una situazione che mi sono trovato ad affrontare.
Mi sto esercitando in java, quindi verso questo linguaggio di programmazione sto muovendo i primi passi. Ho scritto questo codice.
codice:
import java.io.*;
class infosistema
{
public static void main(String[] argomenti)
{
System.out.println("Richiedi la specifica che preferisci e premi [INVIO]. \nPer uscire dal programma scrivi 'end'"); //stampa istruzioni
// in 'a' prendiamo il flusso di standard input
InputStreamReader a = new InputStreamReader(System.in);
// sfruttiamo un BufferedReader per contenere il flusso
// di byte
BufferedReader IN = new BufferedReader(a);
// e convertirlo in una stringa
String s = new String();
String tipo = new String();
String tmp = new String();
// finché non si verifica la condizione di uscita
while(s.compareTo("end")!=0)
{
try {
s= IN.readLine(); // Legge il contenuto della riga
} catch (IOException e) {
s="ERRORE DI LETTURA";
};
// String tipo;
// String tmp;
// e lo stampa
switch (s)
{
case "sistema operativo":
tipo="Sistema Operativo: ";
tmp=System.getProperty("os.name");
break;
}
System.out.println(tipo+tmp);
}
}
}
Come potete vedere nella parte finale del codice ho inserito la dichiarazione delle stringhe
tmp e
tipo senza dichiararle
new String(). Perché se le dichiaro new string(); funzionano e se dichiaro semplicemente
String tmp mi risultano come errore ovvero non inizializzate?
La seconda forma necessita di una inizializzazione in fase di definizione per poter essere considerata funzionante?