PDA

Visualizza la versione completa : [java] inizializzare una stringa


zinkero
22-01-2003, 12:15
Ciao a tutti,

sono nuovo di java e non capisco il seguente comportamento:
ho creato questa funzione:

private void AnalyzeResult(String result){
String FirstToken;
String SecondToken;

StringTokenizer st = new StringTokenizer(result,
String.valueOf((char) 5));
if (st.countTokens() == 2){
FirstToken = st.nextToken();
SecondToken = st.nextToken();
}...


utilizzando jbuilder ho notato che le stringe FirstToken e secondToken
perdono il loro valore non appena escono dall'istruzione if.

Se però le dichiaro cosi:
String FirstToken = "";
String SecondToken = "";

mantengono il valore associato anche usendo dall'if.
Quello che non capisco è il comportamento, cioè se la variabile ha scope
a
livello di funzione per quale motivo perdono il loro valore?

grazie per le eventuali risposte

alla prossima...

l.golinelli
22-01-2003, 12:21
Nel primo caso hai solo dichiarato le variabili, nel secondo le hai anche inizializzate...

:eek:

zinkero
22-01-2003, 12:35
quindi se inizializzo una stringa dentro un blocco di codice (nel caso specifico un if) quando ne esce perde il valore assegnato?

non capisco... :dhò:
Forse ho sbagliato qualcosa utilizzando l'oggetto tokenizer??

l.golinelli
22-01-2003, 13:12
Se la inizializzi dentro al ciclo, usendo perdi il valore... Inizializzandola invece fuori il ciclo gli da il valore e lo mantieni anche dopo...

:ciauz:

lelefante
22-01-2003, 14:01
Non capisco cosa intendi per "perdere il loro valore". Se alle due stringhe viene assegnato un valore nel blocco if, all'uscita di esso il valore verra' sicuramente mantenuto. Invece se il blocco if non viene eseguito le stringhe manterranno il valore dell'inizializzazione (null o "").

zinkero
22-01-2003, 14:57
allora,

se scrivo

String FirstToken;
...

ed "entro" nel blocco if la variabile acquisisce un valore ad esempio
FirstToken = "ciao"
appena esce dal blocco if la variabile FirstToken ritorna a ""

Se dechiaro invece:
String FirstToken = "";
..
ed entro nel blocco if la variabile acquisisce un valore (FirstToken = "ciao")
ad all'uscita dal blocco if mantiene il valore ottenuto nel blocco.

bho.:bhò:

lelefante
22-01-2003, 16:03
Prova a postare il codice di tutta la classe, se non e' troppo esteso.

zinkero
22-01-2003, 21:07
capito!

è un piccolo "bug" (se vogliamo chiamarlo cosi') di jbuilder 5.
Infatti la variabile FirstToken e SecondToken vengono utilizzate solo come appoggio nel blocco if:

String FirstToken;
String SecondToken;

StringTokenizer st = new StringTokenizer(result,
String.valueOf((char) 5));
if (st.countTokens() == 2){
FirstToken = st.nextToken();
SecondToken = st.nextToken();
}...

dopo di che non le utilizzo piu' nel resto nella routine e jbuilder me la segnava come <not in scope>.
In realtà credevo che le var perdessero il loro valore quando in realta il debugger del jbuilder le faceva uscire dallo scope subito dopo il blocco if...
In effetti con una classica system.out.print sono riuscito ad accertarmi che tutto funziona come dovrebbe...


grazie a tutti per l'interesse...
sapere lavoro a questo mio progetto in java solo di sera :sonno::sonno: dopo una lunga giornata in ufficio!

alla prossima.

Loading