Originariamente inviato da Patrick Jane
StringBuffer (è sincronizzata; capirai le differenze più avanti) e StringBuilder vengono utilizzati per gestire le Stringhe, ma al contrario di String
non creano una nuova Stringa; String invece ad ogni modifica che fai, crea un nuovo oggetto String per rappresentare la tua Stringa.
L'esempio con lo StringBuffer in quel modo ti farebbe solo perdere del tempo, sarebbe più brutto, e probabilmente è anche meno efficiente.
Il while è un ciclo iterativo come il for, quindi puoi usare il while per farlo (ma un for in questo caso è più comodo). Ti mostro solamente il for, e ti spiego 2 cose; ricorda però che qui di norma non troverai il codice bello e pronto, diamo una mano a risolvere i problemi
codice:
for(int i=0; i<frase.length(); i++) {
if(frase.charAt(i) == carattereCercato) {
contatore++;
}
}
Il ciclo
for è composto da 3 parti:
for(
inizializzazione;
condizione;
iterazione)
La parte di inizializzazione viene eseguita solo la prima volta, e serve appunto per inizializzare una variabile con un determinato valore. Nel nostro caso, siccome iniziamo dal primo carattere (e vogliamo scorrerla tutta), partiamo da 0.
La parte centrale, condizione, viene eseguita
sempre. Viene eseguita dopo all'esecuzione di iterazione, e nel ciclo iniziale (il primo insomma), dopo alla parte inizializzazione.
Iterazione viene normalmente incrementata di una unità; questo perchè di norma si deve scorrere un elenco... se tu dovessi scorrere i numeri dispari da 1 ad N, ti converrebbe scorrere dal numero 1 ed incrementare di 2 unità la variabile (che nel nostro caso è i).
Per chiarire meglio, accade ciò:
codice:
i = 0;
"se i e' minore della lunghezza della stringa, esegui il ciclo" - In caso contrario, salta all'istruzione dopo alla chiusura del ciclo
(esegue il ciclo)
i++
"se i e' minore della lunghezza della stringa, esegui il ciclo"
(esegue il ciclo)
i++
"se i e' minore della lunghezza della stringa, esegui il ciclo"
(esegue il ciclo)
// Questo sino a quando i è minore di frase.length()
Spero di essere stato chiaro.