Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    132

    metodo toString() e this

    ciao a tutti...
    1)Mi potreste spiegare cosa serve il metodo to String() ed eventualmente farmi un esempio pratico?
    2)
    codice:
    class PointCoordinates {
    
    	private int x, y;
    	public PointCoordinates(int x, int y) {
    		this.x = x;
    		this.y = y;
    	}
    	public int getX() {
    		return x;
    	}
    	public int getY() {
    		return y;
    	}
    }
    this.x=x; che significato ha?assegna alla variabile x, il valore che viene preso in pasto dal metodo PointCoordinates?è giusto o sbagliato?

  2. #2
    this.x=x; che significato ha?assegna alla variabile x, il valore che viene preso in pasto dal metodo PointCoordinates?è giusto o sbagliato?
    Si! Però in quello che hai detto c'è una inesattezza:
    PointCoordinates(int x, int y) è il costruttore della classe PointCoordinates non è un metodo.

    1)Mi potreste spiegare cosa serve il metodo toString() ed eventualmente farmi un esempio pratico?
    Il metodo toString() serve per rappresentare sotto forma di stringa l'oggetto per il quale è stato ridefinito. Nel momento in cui si vuole attribuire ad ogni oggetto della classe (che si è creata) una rappresentazione, si ridefinsce (si fa l'override) il metodo toString() che viene ereditato dalla classe "principale" Object.

    Un esempio:

    codice:
    public class IntervalloNumericoChiuso{
    
       private double estremoSx;
       private double estremoDx;
    
       public IntervalloNumericoChiuso(double sx, double dx){
          estremoSx = sx;
          estremoDx = dx;
       }
    
       @Override
       public String toString(){
         return "[" + estremoSx + ", " + estremoDx + "]";
       }
    
       //...
    }
    In questo caso il metodo toString() ti permette di avere una rappresentazione sotto forma di stringa di un intervallo numerico i cui estremi sono compresi.

  3. #3

    Re: metodo toString() e this

    Originariamente inviato da ifts2004
    ciao a tutti...
    1)Mi potreste spiegare cosa serve il metodo to String() ed eventualmente farmi un esempio pratico?
    2)
    codice:
    class PointCoordinates {
    
    	private int x, y;
    	public PointCoordinates(int x, int y) {
    		this.x = x;
    		this.y = y;
    	}
    	public int getX() {
    		return x;
    	}
    	public int getY() {
    		return y;
    	}
    }
    this.x=x; che significato ha?assegna alla variabile x, il valore che viene preso in pasto dal metodo PointCoordinates?è giusto o sbagliato?
    quando usi this.variabile fai sempre riferimento alla variabile(proprietà) dell'oggetto in questione
    si usa anche per disambiguazione, ovvero quando ricevi un parametro, come nel tuo caso, che ha nome identico a quello di una proprietà dell'oggetto

    siccome i nomi di parametri e di variabili locali hanno priorità sulle proprietà dell'oggetto, se scrivessi
    x=x; otterresti semplicemente l'assegnazione del parametro x al parametro x
    al suo posto quindi usi this.x=x; in modo tale da far capire al compilatore che ciò a cui vuoi assegnare il parametro x è la proprietà dell'oggetto x

    Io personalmente preferisco usare il this ogni volta che mi riferisco a una qualsiasi proprietà dell'oggetto anche fuori da un contesto di ambiguità, ma qui è questione di stili di programmazione

    per il tostring() hanno già spiegato in modo esaustivo

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    132
    In questo caso il metodo toString() ti permette di avere una rappresentazione sotto forma di stringa di un intervallo numerico i cui estremi sono compresi.
    scusa, ma non mi è tanto chiaro...cioè intendi dire che avendo per esempio un qualisiasi oggetto io applicando il metodo toString() posso avere l'oggetto come se fosse una stringa?

    es. oggetto array di interi, applico metodo toString() e dopo averlo applicato cosa ho??

  5. #5
    Originariamente inviato da ifts2004
    scusa, ma non mi è tanto chiaro...cioè intendi dire che avendo per esempio un qualisiasi oggetto io applicando il metodo toString() posso avere l'oggetto come se fosse una stringa?

    es. oggetto array di interi, applico metodo toString() e dopo averlo applicato cosa ho??
    In teoria restituisce i dati in forma di stringa
    Per la risposta che cerchi semplicemente testalo personalmente e vedi cosa ne esce.

    siccome ha un comportamento standard poco prevedibile è sempre consigliato fare l'override del metodo per ogni classe per la quale sia previsto l'utilizzo in modo che tu ti possa impostare il formato della stringa di ritorno secondo quanto desideri

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Originariamente inviato da VincenzoTheBest
    Si! Però in quello che hai detto c'è una inesattezza:
    PointCoordinates(int x, int y) è il costruttore della classe PointCoordinates non è un metodo.
    A voler essere "pignoli" (non me ne volere) anche il costruttore è un metodo, ma è particolare in quanto:
    1. non ha valore di ritorno
    2. ha lo stesso nome della classe
    3. serve a dare uno stato consistente all'istanza in esame, qualora questo sia necessario.
    4. viene aggiunto un costruttore di default (senza parametri) qualora non se ne sia specificato nemmeno uno
    5. bisogna stare attenti nella gerarchia di classi perché la prima chiamata implicitamente è al costruttore della classe padre.

    @Celebron

    In genere non è una buona pratica usare this, sarebbe meglio SEMPRE e COMUNQUE non creare ambiguità con i nomi. Ma per semplicità, con i getter e i setter questo è ammesso.
    Ma usarlo per ogni contesto porta nel codice informazioni ridondanti non necessarie, che creano confusione in chi deve leggere, per qualsiasi motivo, il codice.
    Il this nasce per rafforzare il contesto nei pochi casi di ambiguità dei nomi, non per essere usato nella normale stesura del codice.
    Il mio è un consiglio, non me ne volere

    Poi per sapere cosa hai quanto fai il toString prova a stamparlo, in genere se non fai l'override hai visivamente una stringa che indica appunto che stai trattando un array. La stringa contiene in genere, sotto qualche forma (cioè come parte della stringa) il riferimento alla variabile stessa.

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da valia
    A voler essere "pignoli" (non me ne volere) anche il costruttore è un metodo
    Anche io sono pignolo e quindi ..... i costruttori NON sono metodi! Se vuoi dirlo in modo leggero: i costruttori "assomigliano" visivamente a dei metodi ma non lo sono.
    Anzi, secondo il JLS 8.8 i costruttori non sono nemmeno dei "membri" della classe.

    Constructor declarations are not members. They are never inherited and therefore are not subject to hiding or overriding.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Allora io mi baso su quello che ho sempre letto e il costruttore l'ho sempre visto come una sorta di "metodo particolare". Infatti come dici tu "assomiglia" ad un metodo, anche se nella sostanza non lo è.

    Poi leggendo qui ho la conferma

    costruttore

    di cui ti riporto quello che guardo sempre (che in fondo è quello che ho scritto su)

    A class contains constructors that are invoked to create objects from the class blueprint. Constructor declarations look like method declarations—except that they use the name of the class and have no return type.

    ho dimenticato il look like :P

    Ora grazie per la correzione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.