Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
WF-1000X M6 è la sesta generazione di auricolare in-ear sviluppata da Sony, un prodotto che punta a coniugare facilità di utilizzo con una elevata qualità di riproduzione dei contenuti audio e una cura nella riduzione del rumore ambientale che sia da riferimento
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake ha presentato diverse novità per la sua piattaforma legate all'intelligenza artificiale. Quella forse più eclatante è una collaborazione con OpenAI, ma non mancano diverse nuove funzionalità che rendono la piattaforma più flessibile e in grado di rispondere meglio alle esigenze in continuo cambiamento delle aziende
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Con velocità teoriche fino a 11 Gbps, gestione tramite app intelligente e protezione avanzata dei dispositivi, Roamii BE Pro porta il Wi‑Fi 7 tri‑band nelle abitazioni più esigenti. Un sistema Wi-Fi Mesh proposto da MSI allo scopo di garantire agli utenti una rete fluida e continua capace di sostenere streaming 8K, gaming competitivo e le applicazioni moderne più esigenti in termini di banda
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 11-07-2007, 08:19   #1
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
Uguaglianza tra oggetti

ho riscoperto l'acqua calda però mi interessa sapere qualcosina di più.

Ho istanziato due oggetti di tipo Memo contenenti a volte le medesime stringhe ed a volte stringhe differenti.
Per la caratteristica di essere oggetti, sono confrontabili tra loro con l'operatore di uguaglianza ma......come viene verificata l'uguaglianza dei due oggetti ?????
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 11-07-2007, 10:04   #2
mad_hhatter
Senior Member
 
L'Avatar di mad_hhatter
 
Iscritto dal: Oct 2006
Messaggi: 1105
spero di aver capito bene la domanda...

nota che ti parlo di come funziona la cosa in Java. In Java hai 2 operatori di uguaglianza tra oggetti: "==" e "equals".

il primo confronta L'INDIRIZZO di due riferimenti a oggetti:
Class1 c1 = new Class1();
Class1 c2 = new Class1();

-> c1 == c2 è FALSE

se ora faccio c2 = c1, allora le due variabili puntano allo stesso oggetto e di conseguenza c1 == c2 è, ora, TRUE

passiamo ora al secondo operatore, equals.
supponiamo che Class1 abbia due membri, per semplicità di tipo primitivo e contenga un metodo equals definito come segue:
Class1 {
int m1;
double m2;
...

public boolean equals(Class1 c) {
return (this.m1 == c.m1) && (this.m2 == c.m2);
}
}

ora,
Class1 c1 = new Class1();
Class1 c2 = new Class1();

c1.equals(c2) è TRUE

la cosa importante e interessante è che equals è completamente personalizzato, quindi sei tu a decidere qual è il criterio di uguaglianza

Ultima modifica di mad_hhatter : 11-07-2007 alle 10:06.
mad_hhatter è offline   Rispondi citando il messaggio o parte di esso
Old 11-07-2007, 11:14   #3
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
hai capito cosa intendo

Ma supponi di avere istanziato due oggetti di tipo stringa, se sono oggetti puoi scrivere

s1 != s2 o s1 == s2

mi chiedevo il funzionamento interno del confronto e cioè, se attraverso l'operaotre '=' usato su due oggetti, veniva scandito il contenuto delle due stringhe per rotirnare che i due oggetti sono uguali.

Posso istanziare due rettangoli con la stessa classe e delle stesse dimensioni ma posso dire credo, di avere due rettangoli uguali ma due oggetti diversi!
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 11-07-2007, 12:36   #4
mad_hhatter
Senior Member
 
L'Avatar di mad_hhatter
 
Iscritto dal: Oct 2006
Messaggi: 1105
infatti l'operatore "==" è logico, mentre "equals" è SEMANTICO

se tu hai due stringhe che rappresentano la stessa sequenza di caratteri, o due rettangoli aventi uguale altezza e uguale larghezza, essi sono semanticamente uguali, ma possono essere oggetti diversi.

se tu fai:

String s1 = "abc";
String s2 = "abc";

allora s1 == s2 è false, ma s1.equals(s2) è true perchè il secondo è implementato per confrontare la sequenza di caratteri, mentre il primo guarda solo l'indirizzo contenuto nei riferimenti.

Lo stesso dicasi per i rettangoli.
E' per questo che esiste "==" E ANCHE "equals".

In C++, ad esempio, con l'overloading degli operatori potresti, FORSE (perchè non conosco il C++), fare in modo che "==" si comporti come "equals".
mad_hhatter è offline   Rispondi citando il messaggio o parte di esso
Old 11-07-2007, 12:40   #5
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da mad_hhatter Guarda i messaggi
se tu fai:

String s1 = "abc";
String s2 = "abc";

allora s1 == s2 è false
Beh no, in questo caso specifico (assegnazione di una stringa literal uguale), s1 == s2 dà true. La stringa literal è la stessa e nel constant pool ce n'è una sola. Pertanto i reference sono uguali.


String s1 = new String ("abc");
String s2 = new String ("abc");

Qui s1 == s2 è sempre in ogni caso false.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 11-07-2007, 13:17   #6
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
in Borland Builder C++

String s1= "abc";
String s2= "abc";

is1 == s2 ???? "vero"

String s1= "abc";
String s2= "abcd";

is1 == s2 ???? "falso"
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 11-07-2007, 14:30   #7
mattia.pascal
Senior Member
 
Iscritto dal: Jun 2006
Messaggi: 1077
Parlando di OOP quando si scrive una nuova classe si deve sempre fare l'override del metodo equals in quanto è l'unico metodo per testare l'uquaglianza (semantica) tra due oggetti. Poi che in Java l'operatore "==" fatto su due oggetti stringa uguali restituisca true è solo una scelta fatta dalla Sun.
mattia.pascal è offline   Rispondi citando il messaggio o parte di esso
Old 11-07-2007, 14:37   #8
mapomapo
Senior Member
 
L'Avatar di mapomapo
 
Iscritto dal: May 2005
Città: Bari
Messaggi: 349
in c++ se fai l'include di <string> o <cstring> ora non ricordo bene hai già una classe nella quale è overloadato l'operatore == per effettuare una strcmp....

per quel che riguarda gli oggetti -sempre in c++- ti consiglio di fare un overloading dell'operatore == per fargli fare ciò che ti serve....

Vito
__________________
Si può vincere una guerra in due...o forse anche da solo. Si può estrarre il cuore anche al più nero assassino, ma è più difficile cambiare un'idea!
mapomapo è offline   Rispondi citando il messaggio o parte di esso
Old 11-07-2007, 20:28   #9
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
uhm.....ci siamo leggermente persi

Ho due oggetti di tipo memo quindi due istanze di tali oggetti.
Se scrivo Memo1->Text != Memo2->Text dovrei ottenere true se entrambi gli oggetti sono dello stesso tipo ed hanno i medesimi attributi o proprietà, indifferentemente dall'indirizzamento in memoria
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 11-07-2007, 21:22   #10
aik
Member
 
L'Avatar di aik
 
Iscritto dal: Nov 2004
Città: pisa
Messaggi: 204
Che linguaggio usi?


di solito nei linguaggi che non ammettono un uso diretto dei puntatori ci sono queste due scelte perchè deve comunque essere possibile fare entrambi i confronti (java):
per sapere se due oggetti sono il solito:
==

per sapere se due oggetti hanno lo stesso contenuto:
equals

Nei linguaggi dove puoi usare direttamente i puntatori (c++)
per sapere se due stringhe sono il solito oggetto:
&obj1 == &obj2

per sapere se due oggetti hanno lo stesso contenuto:
obj1 == obj2 (se fanno l'overriding dell'operatore ==)

più facile di così

se ho detto qualche cazzata correggetemi
aik è offline   Rispondi citando il messaggio o parte di esso
Old 11-07-2007, 22:18   #11
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
parlo di C++ ma in termine di oggetti non credo ci sia molta differenza tra C++ e java, sbaglio ?

Se scrivo Memo1 == Memo2 mi viene restituito un false in quanto con molta probabilità entra in gioco l'indirizzamento in memoria, oggetti dello stesso tipo ma che vengono riconosciuti come individui a se.

Se navigo al loro interno con la notazione -> ed arrivo a Text che è il loro contenuto, tale contenuto mi ritorna un true se entrambi contengono il medesimo testo, indifferentemente dalla lunghezza di quest'ultimo.

La mia domanda era appunto: quando scrivo Memo1->Text == Memo2->Text cosa fa il codice celato in quel '==' per scoprire che i due contenuti dei Memo sono uguali ?

Ultima modifica di misterx : 11-07-2007 alle 22:31.
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 11-07-2007, 22:57   #12
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Gli oggetti C++ e gli oggetti Java non sono neanche lontani parenti .

Le specifiche di C++ (ISO '98) ci dicono che il risultato della comparazione per uguaglianza di due puntatori ad oggetti dello stesso tipo è true se e solo se entrambi sono null, puntano allo stesso oggetto o al componente di un array successivo all'ultimo.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 12-07-2007, 06:56   #13
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
parlando esclusivamente di oggetti non penso che un oggetto C++ sia differente da un oggetto java
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 12-07-2007, 12:22   #14
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Se parliamo di bit in memoria, sono entrambi collezioni di uno e zero ma l'oggetto, in quanto definizione di un'identità, in Java è più "cicciotto". Il minimo oggetto Java è l'unione della definizione di java.lang.Object e qualcos'altro. Quello che c'è scritto in Object è parecchio ma due cose risaltano più di tutte. La prima è la definizione di identità: equals e hashCode. La seconda è l'introspezione: getClass. Non è poco.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 12-07-2007, 18:05   #15
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
intendevo a livello concettuale e non implementativo.
Però ancora nessuno mi ha risposto come funziona quel == tra due oggetti
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 13-07-2007, 09:39   #16
aik
Member
 
L'Avatar di aik
 
Iscritto dal: Nov 2004
Città: pisa
Messaggi: 204
Veramente te lo hanno spiegato tutti
aik è offline   Rispondi citando il messaggio o parte di esso
Old 13-07-2007, 10:25   #17
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
Quote:
Originariamente inviato da aik Guarda i messaggi
Veramente te lo hanno spiegato tutti
mi sa che hai letto male!
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 13-07-2007, 10:25   #18
Ed_Bunker
Senior Member
 
L'Avatar di Ed_Bunker
 
Iscritto dal: Jan 2004
Città: Montignoso(MS)
Messaggi: 9484
Ma sbaglio o in C++ e' anche possibile sovrascrivere l'operatore di uguaglianza == ?

In java, invece, nel caso di oggetti, non dovrebbe corrispondere a chiamare il metodo equals ?
__________________
"Il Meglio che si possa ottenere è evitare il peggio." I.C.
Ed_Bunker è offline   Rispondi citando il messaggio o parte di esso
Old 13-07-2007, 11:06   #19
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da Ed_Bunker Guarda i messaggi
Ma sbaglio o in C++ e' anche possibile sovrascrivere l'operatore di uguaglianza == ?
Sì, è possibile (è quello che viene fatto ad esempio nella classe std::string).

Quote:
Originariamente inviato da Ed_Bunker Guarda i messaggi
In java, invece, nel caso di oggetti, non dovrebbe corrispondere a chiamare il metodo equals ?
In Java l'operatore == applicato a due operandi di tipo reference effettua solo una comparazione sui valori dei reference, non sul contenuto degli oggetti.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 13-07-2007, 15:30   #20
mad_hhatter
Senior Member
 
L'Avatar di mad_hhatter
 
Iscritto dal: Oct 2006
Messaggi: 1105
Quote:
Originariamente inviato da misterx Guarda i messaggi
intendevo a livello concettuale e non implementativo.
Però ancora nessuno mi ha risposto come funziona quel == tra due oggetti
boh, mi pareva abbastanza chiaro dalle risposte, forse non ho capito cosa chiedi... comuqnue in Java "==" confronta gli indirizzi di memoria a cui puntano i riferimenti ai 2 oggetti. Ogni riferimento del tipo "Class c;" corrisponde a una word contenente l'indirizzo di memoria dove si trova fisicamente l'oggetto...

più di così non so cosa risponderti... mi spiace
mad_hhatter è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo M...
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Zscaler Threat Report 2026: l'adozione d...
Claude AI minaccia omicidi e ricatti qua...
Dentro la gara: a Milano Cortina 2026 i ...
Samsung Display presenta QD-OLED Penta T...
KONAMI torna con "Silent Hill: Town...
Rende il citofono smart a 44,99€: Ring I...
ThunderX3 XTC, la sedia da ufficio che s...
Mercy, Mission Impossible, Aronofsky: il...
Project Windless: il nuovo action in esc...
Saros: mostrato il gameplay del gioco de...
God of War: Sons of Sparta annunciato e ...
John Wick torna in un nuovo videogioco a...
MADE chiude il 2025 con 59 partner e 250...
007 First Light: allo State of Play un n...
Gli iPhone su Amazon costano meno che su...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 22:40.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v