Ciao, questo è che non vogliono farlo.
E bentornato così lontano.
Vedremo come vengono definiti i metodi e come possono essere invocati in modo che i dati possano essere passati ai metodi
durante il metodo in questione.
No, i dati di vidis sono distorti possono variare da un linguaggio di programmazione all'altro.
Per capire di cosa sto parlando diamo un'occhiata a un semplice esempio.
Consideriamo questo metodo chiamato ID di aggiornamento che ha un solo contapassi chiamato nuovo ID.
Tutto ciò che sta facendo è riassegnare un nuovo ID a Tozan e von no, diciamo che siamo nell'aggiornamento
di Woking o la metrica che la variabile ID nominata sarà solo inizializzata a migliaia.
Quindi ecco una domanda che possiamo fare dopo aver richiamato l'ID di aggiornamento del metodo se stampiamo l'ID
del video che visualizzerebbe 2000 o 2001.
Ho chiesto a questo proposito.
Qualsiasi metodo sta aggiornando il parametro di input 2001.
E Java rimarrebbe nel 2000 mentre in altri linguaggi di programmazione potrebbe essere aggiornato nel 2001.
E stiamo passando un primer, vediamo cosa succede se passiamo un riferimento a un oggetto.
Ed ecco lo stesso metodo ibernato.
L'unica differenza è che invece di Primitivo ora ha una stima di riferimento dell'oggetto che parametro il tipo di
parametro è studente qui sulla variabile ID.
Nell'esempio precedente è stato spostato nella classe Student non dissimile, l'ID di esempio precedente è stato
aggiornato di nuovo 2001 ma questa volta siamo il riferimento all'oggetto come a.
Ora qui è il codice che già nell'aggiornamento di walk ha trovato una sola istanza memorizzata
nella carta come viene creata, quindi l'ID della variabile è inizializzato nel 2000 e infine la variabile S ci è passata nel libro.
Il mio terzo aggiornamento.
Quindi un'altra domanda è se stampiamo l'ID usando la variabile mentre più dati vengono fatti i sondaggi e i nostri sondaggi e
questa volta a luglio.
Potrebbe trattarsi di sondaggi in un'altra lingua in cui potrebbe essere passato il primitivo Tozan Sophron.
Non ha influito sulla velocità della variabile nell'ambiente chiamante, ma un riferimento a un oggetto ha superato la
velocità e l'ambiente di chiamata è stato interessato.
E quando dico un ambiente di chiamata, intendo la parte del tribunale dove è invocato.
Ecco dove abbiamo il metodo nella dichiarazione di missione.
Quindi c'è questa differenza tra la speranza che passa primitive e riferimenti agli oggetti influenzano la velocità
nell'ambiente di chiamata.
Ed è fondamentale per ottenere per loro la comprensione di come le primitive sono i riferimenti di un oggetto vengono passati durante
il metodo e la posizione.
Quindi assicurati di comprendere chiaramente questo argomento prima di andare avanti per apprendere altri argomenti.
Quindi questo è un aspetto molto fondamentale e queste sono le due aree importanti che i linguaggi di programmazione usano
per affrontare i metodi.
Uno è passato per valore e l'altro è passato per riferimento.
Ci sono alcuni più meccanismi per passare i dati su alcuni di essi sono solo piccole variazioni di questi e spesso
lo fanno.
J. Y. usa passare per valore.
Possiamo guardarlo.
Fondamentalmente in questa lezione parliamo di dati passati a metodi e che possono essere liquori
o variabili come primitive e riferimenti a oggetti.
Consideriamo solo le variabili in quanto vogliamo comprendere l'intero stato di tali variabili come influenzate
durante l'invocazione del metodo.
Ma prima di farlo dobbiamo prima capire come le variabili sono effettivamente rappresentate in memoria.
Per prima cosa vediamo come sono rappresentate le variabili primitive in Amadi.
Prendiamo in considerazione questa affermazione di assegnazione primitiva.
E qui la variabile ID ha tre componenti uno ha il nome logico della variabile che è ID.
Il secondo è l'indirizzo di memoria corrispondente alla variabile ID e terzo è il dato reale che semplicemente non è
un nome logico, è semplicemente il nome usato nel codice sorgente per riferirsi ai suoi dati.
Un compilatore converte tali nomi logici in indirizzi di memoria e così durante l'esecuzione del programma l'indirizzo di memoria è
ciò che conta.
Ed è qui che i dati vengono archiviati.
Ed ecco come possiamo visualizzare la relazione tra il nome logico e l'indirizzo di memoria e il valore
che l'indirizzo memorizza a destra.
Abbiamo qui la memoria che in realtà ha avuto l'ID variabile è stato memorizzato l'indirizzo di memoria 8 1 9 2 1
quindi la risposta di indirizzo di memoria 8 1 9 2 1 all'illuminazione.
Quindi in fase di esecuzione abbiamo solo l'indirizzo di memoria sui dati reali, quindi nessuna variabile ha bisogno in fase di runtime.
Devi tenerlo a mente.
Quindi questo è il modo in cui lo metti in variabile viene rappresentato in memoria o non vediamo come appare
il riferimento all'oggetto nella memoria in cui è stato creato un oggetto studente a cui fa riferimento un
riferimento a un oggetto, poiché sappiamo che qui non è un oggetto ma semplicemente Holts cagna quel riferimento a un oggetto in memoria
e per bit intendiamo l'indirizzo di memoria dell'oggetto studente.
Quindi stronza l'indirizzo di memoria dell'oggetto studente ed ecco come possiamo visualizzarlo.
Qui l'indirizzo di memoria 8 1 9 2 corrisponde alla variabile s come nel caso della variabile ID
nell'esempio precedente.
Ma 8 1 9 2 1 conserva l'indirizzo di memoria dell'oggetto reale che è 8 5 4 1 1.
Quindi l'indirizzo di memoria dell'oggetto reale è una prova per 1 1 8 1 9 2 1 sta semplicemente tenendo quel valore.
Ecco come viene rappresentato un riferimento a un oggetto in memoria.
No, diamo un'occhiata al meccanismo del valore di passaggio utilizzato da Java durante il metodo e la posizione.
E come il nome implica passare per valore significa semplicemente passare il valore dell'argomento del metodo a
un parametro che è una copia del valore dell'argomento del metodo e viene quindi assegnato
al parametro method in modo che l'argomento sia una variabile primitiva quindi una copia del corrispondente valore
primitivo è passato.
Ma se oggetto riferimento agli oggetti, allora sappiamo che il valore dell'argomento è l'indirizzo di
memoria dell'oggetto reale.
Quindi una copia dell'indirizzo di memoria degli oggetti viene passata in modo tale da essere passata per valore.
Tutto il passato è il valore dell'argomento nell'istruzione di invocazione del metodo.
Ora vediamo come viene passato usando il valore per valore.
Consideriamo lo stesso snippet di codice che abbiamo visto all'inizio.
Abbiamo il metodo ID di aggiornamento che sta semplicemente aggiornando il valore che ci viene passato in input solo addizione.
Ecco i 4 punti di esecuzione 1 2 3 e 4 in modo da poter esaminare lo stato della memoria in
ogni punto dell'esecuzione.
Quindi, quando il controllo arriva a ciascuno di questi punti, guarderemo la memory stick.
Andiamo avanti ed esaminiamoli Ahmadis.
Il primo punto di esecuzione.
L'ID della variabile è stato inizializzato su così puoi vedere il valore zonin Malmedy no doc per
mantenerlo semplice.
In questa illustrazione utilizziamo l'ID del nome della variabile invece di utilizzare Malmedy indirizzato o rappresentato accanto a
un secondo metodo del punto di esecuzione.
L'ID di aggiornamento è già stato invocato annulla per passare il valore una copia del valore dell'argomento non sgraziata non
smagrito viene assegnata al parametro del metodo Njord.
Quindi ora puoi vedere il nuovo ID anche in memoria.
Successivo un terzo punto di esecuzione.
Aggiorna l'ideomotore aggiorna il nuovo ID.
Quelli sono Dunois.
Tuttavia modifica solo la propria copia del 2000.
Quella è la variabile ID nell'ambiente chiamante ha ancora un valore.
Quindi, una volta che il parametro method ottiene il suo valore, non ha nulla a che fare con
l'argomento usato durante il metodo in location.
Infine, per il punto di esecuzione, l'esecuzione del metodo è stata completata e quindi la nuova idea
locale è stata scartata.
Mentre ID sarà ancora lì e il video della memoria sottovaluta Tozan Così è passato per
valore.
Per quanto riguarda l'utilizzo di variabili primitive come argomenti del metodo non nazista, come un reato di un oggetto è passato utilizzando il
meccanismo del passaggio per valore sotto di esso è molto importante capire questo.
OK, quindi fai più attenzione come abbiamo discusso di questo leggero.
Questo è il secondo snippet di codice che abbiamo visto all'inizio qui.
Aggiornamento Il metodo ha un riferimento a un oggetto come parametro invece dell'eponimo da rendere pronto.
Ma a differenza dell'esempio precedente, abbiamo ancora una volta i quattro punti di esecuzione per stabilizzare
lo stato della memoria al primo punto di essudazione verso l'oggetto studente che viene creato e la sua variabile ID è
inizializzata 2000 e si può vedere la corrispondente rappresentazione in memoria.
Abbiamo fatto oggetto studente con ID come 2000 all'indirizzo di memoria 8 5:41 uno sotto la tabella come lo fa
riferimento nextstep secondo metodo del punto di esecuzione ID ablato è già stato invocato.
Quindi viene eseguita una copia del valore dell'argomento su questo assegnato al parametro method
Esben il valore dell'argomento come l'indirizzo di memoria 5:41 assegnato a ESMA.
Quindi in questo caso sappiamo come sia S che S eseguono il riferimento allo stesso oggetto studente dopo un terzo metodo di aggiornamento del punto
di esecuzione, aggiornando il campo ID dell'oggetto alle dita dei piedi e verso l'alto.
Ora questo influenza anche il riferimento all'oggetto come nell'ambiente del chiamante.
Un oggetto studente è referenziato da S e S uno.
Pertanto, l'accesso al feed utilizzando il riferimento all'oggetto come nell'ambiente chiamante restituirebbe anche il Lukos
corretto e non in sospeso. Infine, al punto di esecuzione di Forth, l'esecuzione del metodo è stata completata.
Quindi la variabile locale viene scartata mentre il riferimento all'oggetto S sarà ancora lì che il valore
aggiornato Tozan e.
Cioè se si fa come Dot ID si otterrebbero sondaggi in Iowa.
Quindi, come puoi vedere, l'oggetto viene modificato al loro interno e quindi tale modifica si riflette in un ambiente
di richiamo anatra che non avviene ma lo inserisce in argomenti.
E questo solo perché qui abbiamo a che fare con un oggetto
a cui si fa riferimento sia dall'ambiente chiamante che da Witan, non guardiamo un esempio leggermente modificato.
Qui l'unica differenza dal codice nella diapositiva precedente è che un po 'di ideomotore abbassa il parametro del
metodo a un nuovo oggetto.
Quindi, come nel caso dell'esempio primitivo ora acquistato parametro Materne e l'argomento nella questione in
questione, la dichiarazione è completamente indipendente da ciascuno di essi.
Pertanto, qualsiasi modifica apportata al nuovo oggetto tramite un altro parametro del metodo non avrà alcun effetto
sull'oggetto originale a cui fa riferimento l'argomento nell'istruzione metodo e ubicazione.
Diamo solo uno sguardo allo stato della memoria.
Possiamo saltare al terzo punto di esecuzione poiché il resto del campo è simile al codice nella
diapositiva precedente.
Quindi ecco cosa abbiamo nel primo punto di esecuzione in cui viene creato l'oggetto studente e
il suo valore ID è inizializzato a 2000.
Ed ecco come noi, dopo il suo aggiornamento, viene invocato il metodo.
Quindi prenotare come S1 in questa istanza fa riferimento allo stesso oggetto studente che ha un valore ID come Tozan I ha terminato
il terzo punto di esecuzione.
Possiamo vedere che un nuovo oggetto viene creato come se non fosse così spesso impostato su di esso anche inizializza il valore dell'ID su
dita o non web.
Quindi l'oggetto originale che ha idee Tozan non è referenziato solo dall'ambiente
chiamante dalla variabile s alla fine al punto di esecuzione 40 l'esecuzione del metodo termina come bonus scartato.
Quindi la variabile S è totalmente inalterata e ciò è dovuto alla riassegnazione
avvenuta all'interno del metodo.
Infine, non solo quel metodo datagramma che passa è identico all'assegnazione della variabile.
Questo è il valore dell'argomento del metodo passato assegnato a quel parametro.
Quindi, in che modo esattamente il comportamento identico svolto dalle assegnazioni delle variabili, ad esempio, consideriamo il nostro metodo nel
codice di posizione nel nostro esempio primitivo.
Vediamo ora a cosa si tradurrebbe in con i vostri incarichi di assegnazione variabile non
assegnabili.
Abbiamo fiducia che stiamo inizializzando ID 2000.
Successivamente stiamo assegnando l'ID al nuovo ID, che è ciò che accade quando viene richiamato il metodo dell'ID di aggiornamento.
E infine il nuovo ID viene aggiornato nel 2001 mentre l'ID rimarrà comunque come Tozan.
Quindi queste affermazioni avranno anche gli stessi stati di memoria del metodo case e Mukesh in no
lascia anche un'occhiata al confronto simile dell'esempio di riferimento di riferimento dell'oggetto qui sopra è il codice su qui sono le
istruzioni di assegnazione delle variabili.
Stiamo creando rapidamente l'oggetto riferimento S e quindi stiamo inizializzando l'ID libero duemila dopo che stai assegnando ad
Aslan, che è ciò che accade quando viene richiamato il metodo dell'ID di aggiornamento.
Quindi sia S che S no.
Ad esempio, lo stesso oggetto studente è il prossimo ID di identificazione 2001 tramite Esben, che è ciò che sta facendo il
metodo dell'ID di aggiornamento.
Quindi nessun ID di accesso tramite altra variabile come restituirà anche le chiamate o 9: 1.
Quindi queste affermazioni avranno anche gli stessi stati della memoria come nel caso off metodo e posizione e,
infine, solo nella vostra mente.
Java passa sempre in base al valore se viene inserito nel nostro riferimento all'oggetto.
Quindi questo è tutto.
È molto importante comprendere chiaramente il processo quando i riferimenti oggetto vengono passati ai metodi.
Facciamo in realtà molto rapidamente loro offerti OK qui siamo nella classe demo di base e quello che stiamo per fare è
che creeremo un array e poi passeremo che il nostro aiuto a un metodo li ho immaginati un terzo
Vivan modificare uno di gli elementi dell'array che la modifica dovrebbe essere riflessa nell'ambiente chiamante che viene passato dal
valore del riferimento all'oggetto poiché c'è un oggetto possiamo anche usarlo come riferimento di un
oggetto.
Per questa dimostrazione.
Quindi andiamo avanti e lo facciamo.
Creiamo un array.
Ed è solo inteso come R se stesso.
Quindi l'idea ha due elementi, chiamiamolo un trucco chiamato vai avanti, questo è ok, definiamo il goalmouth
qui.
Sadik può solo portare i nostri elementi,
quindi stampiamo lo zero quindi k.
Quindi questo sarebbe uno.
E aggiorno il primo elemento è reale ad un certo valore.
Quindi diciamo
22 proprio come abbiamo visto nella diapositiva.
Eseguiamo anche un valore qui.
Quindi stampiamo il nostro L-1 qui.
OK.
Quindi stiamo creando un oggetto array qui.
Quindi questo è un riferimento all'oggetto e stiamo passando questo all'indirizzo di memoria che viene passato per andare.
Quindi, a questo punto, ma questa è una variabile e questa viene estratta nello stesso oggetto e
stiamo aggiornando il valore di uno degli elementi 222 in modo che si rifletta anche quando stampiamo qui.
Giusto, ecco quello che abbiamo visto nella diapositiva.
Quindi andiamo avanti e compilare ed eseguire questo va bene
OK.
Quindi all'interno del metodo stampiamo i valori 1 e 2 e ci aggiorniamo.
Ci sono voluti solo due e stiamo stampando questo valore nella chiamata e la giusta quantità.
OK, quindi lo stampiamo qui.
Stampa il valore appena aggiornato.
In questo modo viene passato per valore o riferimento a un oggetto.
OK, quindi stiamo solo passando il valore dell'indirizzo di memoria dell'oggetto che stiamo facendo una copia di esso e
che viene assegnato qui e che è passato per valore e basta.
Grazie.
E felice codifica.