Due semplici domande sulla "grammatica" di Java

di il
3 risposte

Due semplici domande sulla "grammatica" di Java

Ciao a tutti!
Ho due dubbi, molto semplici da capire, eccoli qua:

1) Quando, nella definizione di una classe, definisco un costruttore generico completo avente dei parametri espliciti, volti ad inizializzare i campi di esemplare dell'oggetto che mi attingo a "creare", è obbligatorio che tali parametri espliciti abbiano nome diverso da quello dei campi di esemplare giusto?

Mi spiego meglio con un breve esempio:

public class Esempio{
    private int a;

    public Esempio (int a){
        a=a;
    }
}//Esempio
Tale codice prevede un errore?

2) Quando all'interno di un metodo void mi trovo a gestire un ciclo while e ho la necessità che, al verificarsi di una determinata condizione, si esca dal ciclo, mi è stato insegnato ad usare una variabile booleana volta a gestire proprio questo problema. Inserisco cioè tale variabile booleana nella condizione tra le parentesi tonde che deve verificarsi per l'esecuzione del while, e, quando voglio uscire dal ciclo, modifico il valore della variabile booleana.

In giro però vedo che spesso viene usata l'istruzione "return;", senza l'aggiunta di nulla. La funzione è la stessa con l'unica differenza che non viene gestita una variabile aggiuntiva?


Grazie mille

3 Risposte

  • Re: Due semplici domande sulla "grammatica" di Java

    Domanda 1)
    ogni metodo di una classe vede in maniera differente le variabili interne al metodo rispetto a quelle esterne:
    nel caso da te specificato non darebbe nessun errore di compilazione, ma non si comporta come previsto. l'assegnazione corretta è
    public class Esempio{
        private int a;
    
        public Esempio (int a){
            this.a=a;
        }
    }//Esempio
    all'interno del costruttore poichè ogni metodo accede prima alle suo variabili interne e qualora la variabile specificata non esistesse tra le sue variabili solo allora andrebbe a "cercare" la variabile con quel nome tra quelle della classe.
    l'attributo this serve proprio ad indicare che si vuole accedere a qualcosa (variabili, metodi ...) della classe su cui si sta lavorando e non del metodo specifico.

    Domanda 2)
    return; viene usato per uscire da un metodo (in questo caso void poichè non ritorna nulla), rende molto più leggibile il codice rispetto all'utilizzo di variabili booleane che ne interrompano i cicli. se ti trovi meglio a utilizzare questi flag di controllo puoi continuare, altrimenti l'utilizzo di return è una valida alternativa.

    spero di averti chiarito i dubbi
  • Re: Due semplici domande sulla "grammatica" di Java

    Ma se non mettessi this.a, il compilatore a cosa fa riferimento quando legge a=a? Cosa considera come la prima "a"? E la seconda?
  • Re: Due semplici domande sulla "grammatica" di Java

    Sarebbero entrambe la variabile passata come parametro quindi l'assegnazione a=a non farebbe nulla perché per definizione prenderebbe il valore di a e lo metterebbe nella variabile a


    Inviato dal mio iPhone utilizzando Tapatalk
Devi accedere o registrarti per scrivere nel forum
3 risposte