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.
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?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); } } }
La seconda forma necessita di una inizializzazione in fase di definizione per poter essere considerata funzionante?