Visualizzazione dei risultati da 1 a 7 su 7

Hybrid View

  1. #1
    Ti posto un semplice esempio
    codice:
    public class PassaggioParametri
    {
    	public static class Animale
    	{
    		public int anni;
    
    
    		public Animale(int anni)
    		{
    			this.anni = anni;
    		}
    
    
    	}
    
    
    	public static void passaggioParametri(int value)
    	{
    		value = 50;
    	}
    
    
    	public static void passaggioParametri(Animale animale)
    	{
    		animale.anni = 50;
    	}
    
    
    	public static void main(String[] args)
    	{
    		int anni = 10;
    		System.out.println("MAIN ANNI VALE " + anni);
    		// PASSAGGIO PER VALORE
    		passaggioParametri(anni);
    		System.out.println("MAIN DOPO PASSAGGIO PER VALORE ANNI VALE " + anni);
    
    
    		PassaggioParametri.Animale animale = new PassaggioParametri.Animale(anni);
    		// PASSAGGIO PER REFERENZA
    		System.out.println("MAIN ANIMALE.ANNI VALE " + animale.anni);
    		passaggioParametri(animale);
    		System.out.println("MAIN DOPO PASSAGGIO PER REFERENCE ANIMALE.ANNI VALE " + animale.anni);
    	}
    }
    Secondo te che valori verranno stampati dalle System.out ?

  2. #2
    altra domanda che sorge(cosa serve "this"?) es:

    codice:
    publicAnimale(int anni)
            {
                this.anni = anni;
            }
    
    serve per dire che all' oggetto anni si applica il valore anni (e quindi per non confonderli)?


    non mi è chiaro il seguente pezzo di codice:
    codice:
    publicstaticvoid passaggioParametri(Animale animale)
        {
            animale.anni =50;
        }
    cioè perché scrivi due volte animale (Animale animale)nelle parentsi tonde dopo il metodo passaggioParametri?
    e perché tra le parentesi graffe seguenti scrivi animale.anni = 50; e non semplicemente animale = 50? (da dove deriva il fatto che devi scriverle insieme animale e anni)

    forse indichi prima la classe e dopo il punto il suo attributo?


    per rispondere alla domanda..forse dovrei prima capire queste cose.. a occhio comunque direi che i primi anni passati per valore valgano 10 ...

    i secondi..forse sono indipendenti dalla chiamata del metodo (passaggioParametri (anni)) e se è così direi valgano 10.

    ma se tu volessi attuare il metodo passaggioParametri(anni), e stampare a video il risultato? (cioè 50)

    grazie per l' attenzione che mi date
    Ultima modifica di Filippo11; 21-01-2015 a 16:05

  3. #3
    grazie ancora per il codice di esempio..
    i primi due anni valgono 10.
    ho capito che il passaggio di parametri di tipo oggetto avviene per riferimento (cioè il parametro formale punta alla stessa area di memoria puntata dall' oggetto, quindi la modifica)


    cosa significa this?

    programma senza this
    codice:
    • class Student10{
    • int id;
    • String name;
    • student(int id,String name){
    • id = id;
    • name = name;
    • }
    • void display(){System.out.println(id+" "+name);}
    • public static void main(String args[]){
    • Student10 s1 = new Student10(111,"Karan");
    • Student10 s2 = new Student10(321,"Aryan");
    • s1.display();
    • s2.display();
    • }
    • }
    programma con this

    codice:
    • //example of this keyword
    • class Student11{
    • int id;
    • String name;
    • Student11(int id,String name){
    • this.id = id;
    • this.name = name;
    • }
    • void display(){System.out.println(id+" "+name);}
    • public static void main(String args[]){
    • Student11 s1 = new Student11(111,"Karan");
    • Student11 s2 = new Student11(222,"Aryan");
    • s1.display();
    • s2.display();
    • }
    • }
    Ultima modifica di Filippo11; 22-01-2015 a 18:59

Tag per questa discussione

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.