Che cosa è esattamente un’istanza in Java?

Qual è la differenza tra un object, un’istanza e un riferimento? Dicono che devono creare un’istanza per la loro applicazione? Cosa significa?

Un object e un’istanza sono la stessa cosa .

Personalmente preferisco usare la parola “istanza” quando ci si riferisce a un object specifico di un tipo specifico, ad esempio “un’istanza di tipo Foo”. Ma parlando di oggetti in generale direi “oggetti” piuttosto che “istanze”.

Un riferimento fa riferimento a un object specifico oppure può essere un riferimento null.


Dicono che devono creare un’istanza per la loro applicazione. Cosa significa?

Probabilmente significano che devi scrivere qualcosa del genere:

Foo foo = new Foo(); 

Se non sei sicuro di quale tipo dovresti istanziare dovresti contattare gli sviluppatori dell’applicazione e chiedere un esempio più completo.

“istanza di un’applicazione” significa nulla.

“object” e “istanza” sono la stessa cosa. Esiste una “class” che definisce la struttura e le istanze di quella class (ottenuta con il new ClassName() ). Per esempio c’è la class Car , e ci sono istanze con proprietà diverse come il chilometraggio, la velocità massima, la potenza dei cavalli, la marca, ecc.

Il riferimento è, nel contesto Java, una variabile * – è qualcosa che punta a un object / istanza. Ad esempio, String s = null;s è un riferimento, che attualmente non fa riferimento ad alcuna istanza, ma può fare riferimento a un’istanza della class String .

* Jon Skeet ha preso nota della differenza tra una variabile e un riferimento. Vedi il suo commento. È una distinzione importante su come funziona Java quando invochi un metodo – valore per pass-per-valore.

Il valore di s è un riferimento. È molto importante distinguere tra variabili e valori, oggetti e riferimenti.

Penso che Object = Instance. Il riferimento è un “link” a un object.

 Car c = new Car(); 

la variabile c memorizza un riferimento a un object di tipo Car.

Quando si utilizza la parola chiave new ad esempio JFrame j = new JFrame(); stai creando un’istanza della class JFrame .

Il new operatore crea un’istanza di una class allocando memoria per un nuovo object e restituendo un riferimento a tale memoria.
Nota: la frase “istanziare una class” significa la stessa cosa di “creare un object”. Quando crei un object, stai creando una “istanza” di una class, quindi “istanziare” una class.

Dai un’occhiata qui
Creazione di oggetti


I tipi di linguaggio di programmazione Java sono suddivisi in due categorie: primitive types e tipi di reference .
I tipi di reference sono tipi di class , tipi di interface e tipi di array .
C’è anche un tipo speciale null .
Un object è un’istanza creata in modo dinamico di un tipo di class o di una array creata dynamicmente.
I valori di un tipo di riferimento sono riferimenti a oggetti.

Fare riferimento a Tipi, valori e variabili per ulteriori informazioni

 Computer c= new Computer() 

Qui viene creato un object dalla class Computer . Un riferimento denominato c consente al programmatore di accedere all’object.

La differenza principale è quando si dice ClassName obj = null; stai solo creando un object per quella class. Non è un’istanza di quella class.

Questa affermazione assegna solo la memoria per le variabili statiche di meber, non per le normali variabili membro.

Ma quando si dice ClassName obj = new ClassName (); stai creando un’istanza della class. Questo stato assegnerà alla memoria tutte le variabili membro.

fondamentalmente object e istanza sono le due parole usate in modo intercambiabile. Una class è un modello per un object e un object è un’istanza di una class.

“creando un’istanza di una class” che ne dici, “stai prendendo una class e facendo una nuova variabile di quella class che cambierà a seconda di un input che cambia”

Classe nella biblioteca chiamata Nacho

variabile Libre per contenere l’istanza che cambierà

Nacho Libre = new Nacho (Variable, Scanner Input, o qualunque cosa vada qui, Questo è il posto che accetta le modifiche quindi colloca il valore in “Libre” sul lato sinistro del segno di uguale (sai “Nacho Libre = new Nacho ( Scanner.in) “” Nacho Libre “si trova a sinistra di = (non è un discorso tecnico, questo è il mio modo di spiegarlo)

Penso che sia meglio che dire “istanza di tipo” o “istanza di class”. Veramente il punto è che deve solo essere dettagliato di più …. “istanza di tipo o class” non è abbastanza buona per il principiante ….. wow, è come uno scioglilingua e il tuo cervello non può concentrarsi sugli scioglilingua molto bene …. che la parola “istanza” è molto fastidiosa e il semplice suono mi fa impazzire …. chiede più dettagli ….. si prega di essere suddiviso meglio. Ho dovuto google che cosa significa “istanza” solo per orientarmi bene ….. prova a dire “istanza di class” a tua nonna …. ehi!

Il significato letterale dell’istanza è “un esempio o una singola occorrenza di qualcosa”. che è molto più vicino alla terminologia di Instance in Java.

Java segue il caricamento dinamico, che non è come il linguaggio C in cui tutto il codice viene copiato nella RAM in fase di runtime. Consente di catturare questo con un esempio.

  class A { int x=0; public static void main(String [] args) { int y=0; y=y+1; x=x+1; } } 

Cerchiamo di compilare ed eseguire questo codice.

passo 1: javac A.class (viene generato il file .class che è il byte code)

passo 2: java A (il file .class viene convertito in codice eseguibile)

Durante il passaggio 2, il metodo principale e gli elementi statici vengono caricati nella RAM per l’esecuzione. Nello scenario sopra, Nessun problema fino alla riga y = y + 1. Ma ogni volta che x = x + 1 viene eseguito, l’errore del tempo di esecuzione verrà generato poiché la JVM non sa quale sia la x che viene dichiarata al di fuori del metodo principale (non statico).

Quindi, se in qualche modo il contenuto del file .class è disponibile nella memoria per l’esecuzione della CPU, non c’è più alcun problema.

Questo viene fatto attraverso la creazione dell’object e la parola chiave NEW fa questo lavoro.

Il concetto di riservare memoria nella RAM per il contenuto del disco rigido (qui .class file) in fase di esecuzione è chiamato Instance

L’object è anche chiamato l’istanza della class.

Gli oggetti , che sono anche chiamati istanze , sono elementi autonomi di un programma con caratteristiche e dati correlati. Per la maggior parte, si utilizza la class solo per creare istanze e quindi lavorare con tali istanze.

-Definizione tratta dal libro “Sams Teach Yourself Java in 21 days”.

Supponiamo tu abbia 2 classi, class pubblica class media e class pubblica class_2 e desideri creare un’istanza di Class_2 in MainClass.

Questo è un modo molto semplice e basilare per farlo:

 public MainClass() /*******this is the constructor of MainClass*******/ { Class_2 nameyouwant = new Class_2(); } 

Spero che aiuti!