Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto
Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto
Amazon porta i colori sul suo Kindle da scrittura più grande: schermo Colorsoft a 11 pollici, processore quad-core, penna premium più reattiva e strumenti IA per le note, sono le note salienti. Il salto di prezzo rispetto al modello in bianco e nero si fa sentire, anche se la percezione è quella di trovarsi di fronte a un prodotto di fascia altissima, per veri appassionati
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
Abbiamo intervistato Sumit Dhawan, CEO di Proofpoint, per capire come stia cambiando il mondo della sicurezza con l'avvento dell'intelligenza artificiale e con il ritmo sempre più serrato a cui vengono trovate vulnerabilità nel software. Un problema significativo, che richiederà del tempo per essere risolto (o quantomeno arginato)
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
La parola d'ordine al Nextcloud Summit 2026, che si è tenuto a Monaco, è stata "sovranità". Non come è spesso usato questo termine in politica ma, al contrario, come capacità positiva di decidere il proprio destino tecnologico, con modalità collaborative e aperte. L'Europa dice già molto nel mondo open source, che viene visto come mezzo per ottenere la tanto agognata autonomia digitale
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 11-07-2007, 07: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, 09: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 09:06.
mad_hhatter è offline   Rispondi citando il messaggio o parte di esso
Old 11-07-2007, 10: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, 11: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, 11:40   #5
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
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, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 11-07-2007, 12: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, 13: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, 13: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, 19: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, 20: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, 21: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 21:31.
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 11-07-2007, 21: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, 05: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, 11: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, 17: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, 08: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, 09: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, 09:25   #18
Ed_Bunker
Senior Member
 
L'Avatar di Ed_Bunker
 
Iscritto dal: Jan 2004
Città: Montignoso(MS)
Messaggi: 9504
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, 10:06   #19
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
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, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 13-07-2007, 14: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


Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto Kindle Scribe Colorsoft: riduce le cornici e div...
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint L'IA cambia tutte le regole della sicurezza tra ...
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026 L'Europa conta nella tecnologia e può ess...
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più Dreame X60 Pro Ultra Complete: i bracci si esten...
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati TCL 65C8L, la recensione del SQD-Mini LED da 440...
Rocket Lab acquisisce Iridium: nasce un ...
Una ventola nascosta e un design fuori d...
Display e fotocamera insieme: a Zurigo n...
Lenovo Idea Tab Plus, il tablet per stud...
Un ingegnere di AMD ha riprodotto in cas...
SanDisk Optimus cresce con nuovi SSD cer...
Loongson contro Intel e AMD: dalla Cina ...
Australia, quasi tutti gli under-16 aggi...
Oltre 1.300 miliardi di dollari per la p...
Un nuovo studio mette in dubbio la natur...
Crisi Volkswagen, torna l'ipotesi cessio...
Il CERN spegne il Large Hadron Collider:...
Stranger Than Heaven avrà una storia mol...
Il futuro prezzo di PS6 preoccupa i gioc...
AMD Ryzen 10000 sempre più vicini...
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: 18:10.


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