Perché una variabile intera dentro un metodo statico, si com

di il
7 risposte

Perché una variabile intera dentro un metodo statico, si com

Ciao a tutti ...
Volevo chiedere agli esperti alcune cose, inerenti al seguente codice:

public class ContaCarattereSpecialeVettore {
	// Dati 3 vettori di caratteri conta il numero totale di 'a'
	public static void main(String[] args) {
		char[] v1={'f', 'o', 'r', 'u', 'm'}; 
		char[] v2={'p', 'r', 'o', 'g', 'r', 'r', 'a', 'm','m','a', 't', 't', 'o','r','i'};
		char [] v3= {'j', 'a','v','a'};
		
		System.out.println("Totale occorrenze trovate: " +conta(v1)+conta(v2)+conta(v3));
	}
	public static int conta(char[] v){
		int occorrenzaCarattere=0; 
		for (int i=0; i<v.length; i++)
			if (v[i]=='a') occorrenzaCarattere++;
			System.out.println("Lunghezza matrice: " + v.length);
			System.out.println("Occorrenze trovate " + occorrenzaCarattere);
		return occorrenzaCarattere; 
	} 
}
1. perchè la variabile: occorrenzaCarattere(contenuta nel metodo statico conta), pur non essendo statica si comporta come lo fosse? ... non perde il suo valore.

2.c'è un modo di capire la v a quale vettore si riferisce? ... tipo primo vettore, occorrenze trovate ... secondo vettore ...

GRAZIE!

7 Risposte

  • Re: Perché una variabile intera dentro un metodo statico, si com

    nelloskybus ha scritto:


    1. perchè la variabile: occorrenzaCarattere(contenuta nel metodo statico conta), pur non essendo statica si comporta come lo fosse? ... non perde il suo valore.
    Non è che "non perde il valore" .... è una variabile locale, terminato il metodo ... sparisce.
    All'inizio è inizializzata a 0 e in base a ciò che viene trovato viene incrementata. E alla fine il valore viene restituito.

    nelloskybus ha scritto:


    2.c'è un modo di capire la v a quale vettore si riferisce? ... tipo primo vettore, occorrenze trovate ... secondo vettore ...
    All'interno di conta? No, non può sapere null'altro dell'array, anche perché quei array sono locali al main.
  • Re: Perché una variabile intera dentro un metodo statico, si com

    Grazie
  • Re: Perché una variabile intera dentro un metodo statico, si com

    andbin ha scritto:


    Non è che "non perde il valore" .... è una variabile locale, terminato il metodo ... sparisce.
    All'inizio è inizializzata a 0 e in base a ciò che viene trovato viene incrementata. E alla fine il valore viene restituito.
    quindi il valore rimane nel metodo per le tre chiamate e poi è restituito al Maine che lo invoca?
  • Re: Perché una variabile intera dentro un metodo statico, si com

    nelloskybus ha scritto:


    quindi il valore rimane nel metodo per le tre chiamate e poi è restituito al Maine che lo invoca?
    No.
    conta viene prima invocato con v1, occorrenzaCarattere vale inizialmente 0, non ci sono occorrenze di 'a', quindi resta 0 e viene restituito perciò 0. Il metodo termina, occorrenzaCarattere non esiste più.

    conta viene poi invocato con v2, occorrenzaCarattere vale inizialmente 0, ci sono 2 occorrenze quindi viene incrementato 2 volte e viene restituito perciò 2. Il metodo termina, occorrenzaCarattere non esiste più.

    ....
  • Re: Perché una variabile intera dentro un metodo statico, si com

    nelloskybus ha scritto:


    andbin ha scritto:


    Non è che "non perde il valore" .... è una variabile locale, terminato il metodo ... sparisce.
    All'inizio è inizializzata a 0 e in base a ciò che viene trovato viene incrementata. E alla fine il valore viene restituito.
    quindi il valore rimane nel metodo per le tre chiamate e poi è restituito al Maine che lo invoca?
    ma allora come fa il println a sommare il tutto? usa il valore che riceve dal return?
  • Re: Perché una variabile intera dentro un metodo statico, si com

    nelloskybus ha scritto:


    ma allora come fa il println a sommare il tutto? usa il valore che riceve dal return?
    Tra l'altro nella riga:

    System.out.println("Totale occorrenze trovate: " +conta(v1)+conta(v2)+conta(v3));

    non viene fatta una somma matematica ma una concatenazione della stringa!
  • Re: Perché una variabile intera dentro un metodo statico, si com

    Grazie ... sto imparando tantissimo
Devi accedere o registrarti per scrivere nel forum
7 risposte