Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è uno smartphone che unisce una fotocamera molto più versatile rispetto al passato grazie allo zoom ottico 5x, il supporto magnetico Pixelsnap e il nuovo chip Tensor G5. Il dispositivo porta Android 16 e funzionalità AI avanzate come Camera Coach, mantenendo il design caratteristico della serie Pixel con miglioramenti nelle prestazioni e nell'autonomia. In Italia, però, mancano diverse feature peculiari basate sull'AI.
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
L'abbonamento Ultimate di GeForce NOW ora comprende la nuova architettura Blackwell RTX con GPU RTX 5080 che garantisce prestazioni tre volte superiori alla precedente generazione. Non si tratta solo di velocità, ma di un'esperienza di gioco migliorata con nuove tecnologie di streaming e un catalogo giochi raddoppiato grazie alla funzione Install-to-Play
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Deebot X11 Omnicyclone implementa tutte le ultime tecnologie Ecovacs per l'aspirazione dei pavimenti di casa e il loro lavaggio, con una novità: nella base di ricarica non c'è più il sacchetto di raccolta dello sporco, sostituito da un aspirapolvere ciclonico che accumula tutto in un contenitore rigido
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 22-10-2007, 18:33   #1
D3stroyer
Senior Member
 
L'Avatar di D3stroyer
 
Iscritto dal: Dec 2003
Messaggi: 3567
[Java] indirizzo di un oggetto.

ciao, sto approcciando java da poco tempo. Mi sono letto un libro di eckel (thinking in java 3rd), ma ora che mi metto a provare mi trovo in difficoltà su tante cose inutili. "Vengo" dal c++ e mi confondo qui..tante cose girano diverse.

Come posso avere in output l'indirizzo di un oggetto? In qualsiasi modo la giro mi da errori di compilazione!

Immaginate io abbia creato una istanza di un oggetto (una classe vuota ad esempio) e voglia il suo indirizzo in System.out.print() chiamata nel main.

cosa scrivo?

E' sicuramente una cavolata per voi, ma nemmeno google mi risponde

L'unico modo che compila è questo..ma non è un indirizzo quello! (l'output è "cane@187aeca")

Codice:
import java.util.*;
import java.lang.*;

class cane {}

public class mio {
	public static void main(String[] Args) {
	cane uno = new cane();
	System.out.println(uno);
	}
}
__________________
Intel Core 2 Duo E6300 @ 3.00GHz / Gigabyte P965 DS4 / 2xTEAM GROUP TVDD1024M800 / Gainward GTX460 GS 1GB
Barracuda 7200.11 SataII 500Gb + Maxtor ATA320Gb + Hitachi SataII 320Gb / Enermax Noisetaker 495W
Il miglior topic di sempre

Ultima modifica di D3stroyer : 22-10-2007 alle 18:41.
D3stroyer è offline   Rispondi citando il messaggio o parte di esso
Old 22-10-2007, 18:45   #2
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Non c'è un indirizzo. Cioè c'è, perchè ogni variabile di tipo riferimento potrebbe essere un puntatore, ma non c'è modo di ottenere l'indirizzo di memoria puntato tramite Java.
__________________
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 22-10-2007, 18:55   #3
D3stroyer
Senior Member
 
L'Avatar di D3stroyer
 
Iscritto dal: Dec 2003
Messaggi: 3567
azz, così sbagliare con le map è ancora piu' facile :/ Forse perchè ancora non ho tutto chiaro. Troverò altri modi per verificare.
__________________
Intel Core 2 Duo E6300 @ 3.00GHz / Gigabyte P965 DS4 / 2xTEAM GROUP TVDD1024M800 / Gainward GTX460 GS 1GB
Barracuda 7200.11 SataII 500Gb + Maxtor ATA320Gb + Hitachi SataII 320Gb / Enermax Noisetaker 495W
Il miglior topic di sempre
D3stroyer è offline   Rispondi citando il messaggio o parte di esso
Old 22-10-2007, 19:21   #4
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
In che senso?

Se quello che ti serve è un identificatore dell'oggetto puntato allora puoi usare il metodo hashCode() che tutti gli oggetti possiedono in quanto figli di Object.

Il valore restituito non è necessariamente l'indirizzo dell'oggetto ma, per contratto, è univoco entro i limiti del possibile.
__________________
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 22-10-2007, 19:33   #5
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da D3stroyer Guarda i messaggi
azz, così sbagliare con le map è ancora piu' facile
perché mai dovresti "sbagliare con le map" se non hai accesso ai valori numerici dei puntatori di memoria? cosa dovresti sbagliare? provo a darti una spiegazione cercando di reinterpretare quello che scrivi. affinchè in una hash table il numero di collisioni sia minimizzato devi aver realizzato una buona funzione di hashing, cioè una funzione di hashing che per oggetti diversi (oggetti che il proprio metodo equals dichiarerebbe incompatibili) restituisca il più spesso possibile (anche sempre, possibilmente) hash codes diversi. fermo rimane però quanto richiesto dal contratto di hashCode: per oggetti che il metodo equals dichiarerebbe uguali il metodo hashCode deve restituire valori uguali.

il metodo hashCode della classe Object restituisce come hash code il valore numerico del puntatore nativo che punta all'oggetto (exploit tramite il quale potresti accedere ai puntatori) e questo assicura al 100% che non ci siano mai collisioni tra istanze diverse, ma il problema percui la stragrande maggioranza delle classi che vanno a finire in una HashMap sovrascrivono il metodo hashCode è che sovrascrivono anche il metodo equals, il quale a sua volta finisce spesso per dichiarare identiche due istanze diverse. un esempio lapalissiano: la classe Integer.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 22-10-2007, 19:57   #6
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Quote:
Originariamente inviato da 71104 Guarda i messaggi
il metodo hashCode della classe Object restituisce come hash code il valore numerico del puntatore nativo che punta all'oggetto (exploit tramite il quale potresti accedere ai puntatori)
Sarebbe vero se lo dicessero le specifiche del linguaggio (la classe Object è parte del linguaggio di programmazione Java). Lo dicono? Come diceva un mio professore, lo sdudende addendo bodrebbe ghiedere: e se il puntatore fosse a 64, 128, 256bit? Che faremmo?
__________________
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 22-10-2007, 20:43   #7
D3stroyer
Senior Member
 
L'Avatar di D3stroyer
 
Iscritto dal: Dec 2003
Messaggi: 3567
no perchè essendo impedito, quando chiamavo un oggetto tramite iteratore controllavo che l'indirizzo fosse uguale a quello della chiamata diretta di questo.

Lo facevo all'inizio per prendere la mano sui containers e qui ora devo inventarmi qualcosa. Provo a informarmi un po' su questo hashcode.

grazie
__________________
Intel Core 2 Duo E6300 @ 3.00GHz / Gigabyte P965 DS4 / 2xTEAM GROUP TVDD1024M800 / Gainward GTX460 GS 1GB
Barracuda 7200.11 SataII 500Gb + Maxtor ATA320Gb + Hitachi SataII 320Gb / Enermax Noisetaker 495W
Il miglior topic di sempre
D3stroyer è offline   Rispondi citando il messaggio o parte di esso
Old 23-10-2007, 10:52   #8
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da PGI-Bis Guarda i messaggi
Sarebbe vero se lo dicessero le specifiche del linguaggio (la classe Object è parte del linguaggio di programmazione Java). Lo dicono?
lo suggeriscono

Quote:
Come diceva un mio professore, lo sdudende addendo bodrebbe ghiedere: e se il puntatore fosse a 64, 128, 256bit? Che faremmo?
eh? :|
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 23-10-2007, 17:27   #9
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Quote:
Originariamente inviato da 71104 Guarda i messaggi
lo suggeriscono
Come lo suggeriscono . No, non lo suggeriscono. Lo sdudende...eccetera: supponiamo che le specifiche dicano implicitamente o esplicitamente che il valore restituito da System.identyHashCode coincide con il valore del puntatore all'oggetto. Se così fosse, la possibilità di una corretta realizzazione del linguaggio di programmazione Java sarebbe limitata a sistemi in cui lo spazio di indirizzamento fosse minore di 2^32, essendo l'hash di un Object un valore a 32bit. Giusto?
__________________
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 23-10-2007, 19:35   #10
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da PGI-Bis Guarda i messaggi
Come lo suggeriscono . No, non lo suggeriscono.
a me questo sembrava un suggerimento:
Quote:
As much as is reasonably practical, the hashCode method defined by class Object does return distinct integers for distinct objects. (This is typically implemented by converting the internal address of the object into an integer, but this implementation technique is not required by the JavaTM programming language.)
sta scritto nella documentazione del metodo Object.hashCode().

Quote:
Lo sdudende...eccetera: supponiamo che le specifiche dicano implicitamente o esplicitamente che il valore restituito da System.identyHashCode coincide con il valore del puntatore all'oggetto. Se così fosse, la possibilità di una corretta realizzazione del linguaggio di programmazione Java sarebbe limitata a sistemi in cui lo spazio di indirizzamento fosse minore di 2^32, essendo l'hash di un Object un valore a 32bit. Giusto?
giusto, ma stando ai tuoi stessi pronostici non credo che Java vivrà abbastanza da vedere le macchine (se mai esisterà per l'uomo la necessità di crearle) con bus di indirizzi da 128 o 256 bit
poi sempre di un suggerimento si tratta: è chiaro che su una macchina a 64 bit non puoi usare tutto l'indirizzo dell'oggetto come hashCode, ma un metodo nativo può fare l'hashing del puntatore prendendo magari i bit che su una data architettura si sanno essere quelli più significativi per identificare un oggetto.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 23-10-2007, 20:01   #11
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Per specifiche intendo le specifiche del linguaggio di programmazione Java, quelle che stabiliscono cosa è linguaggio di programmazione Java e cosa no.

Il mio timore è che citando la particolare versione del linguaggio (qual'è quella talvolta espressa nella documentazione delle librerie standard del JRE di Sun Microsystem) a qualcuno venga in mente di fare qualcosa con l'indirizzo del puntatore per poi scoprire che per una diversa versione di Java il proprio codice non funziona più e concludere che Java non è portabile. Come dire che siccome la moglie di Tizio tradisce suo marito allora Caio è cornuto. Facciamo attenzione, tutto qui.
__________________
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 23-10-2007, 20:15   #12
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da PGI-Bis Guarda i messaggi
Per specifiche intendo le specifiche del linguaggio di programmazione Java, quelle che stabiliscono cosa è linguaggio di programmazione Java e cosa no.
di sicuro la tua idea di specifiche include anche il reference delle classi standard e dei metodi visto ciò che scrivi:
Quote:
Originariamente inviato da PGI-Bis Guarda i messaggi
supponiamo che le specifiche dicano implicitamente o esplicitamente che il valore restituito da System.identyHashCode coincide con il valore del puntatore all'oggetto. [...]
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 23-10-2007, 20:24   #13
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
La mia idea di specifiche include ed è limitata al libro che conosci. Per la cronaca raramente metto le parole a caso. Nella fattispecie il grassetto andava su "supponiamo che".
__________________
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 23-10-2007, 23:05   #14
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da PGI-Bis Guarda i messaggi
La mia idea di specifiche include ed è limitata al libro che conosci.
cioè quale?

Quote:
Per la cronaca raramente metto le parole a caso. Nella fattispecie il grassetto andava su "supponiamo che".
dare per scontato un "supponiamo che esistano delle specifiche che contemplino l'esistenza di classi e metodi standard che in realtà non sono contemplate" mi pareva un po' troppo
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 25-10-2007, 19:28   #15
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
The Java Language Specifications, terza edizione.

Non fare il glottologo! "Supponiamo che" da il via ad un discorso ipotetico: se nel discorso c'è qualcosa che non corrisponde alla realtà rientra nell'ipotesi. Se mancassero elementi privi di una controparte reale allora non supporremmo più un bel nulla: sarebbe così e basta.
__________________
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 25-10-2007, 19:33   #16
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da PGI-Bis Guarda i messaggi
The Java Language Specifications, terza edizione.
quella non è l'unica Bibbia di Java: non puoi dire che una cosa in merito a Java sarebbe vera solo se quel libro la dicesse. se vai nel reference delle classi standard ci trovi tutte cose altrettanto vere.

Quote:
Non fare il glottologo!
che non so manco che è e perdona la mia limitatezza linguistica anche detta ignoranza

Quote:
"Supponiamo che" da il via ad un discorso ipotetico: se nel discorso c'è qualcosa che non corrisponde alla realtà rientra nell'ipotesi.
si ma come dicevo nel mio post precedente, mi era sembrato che avessi messo nell'ipotesi cose un po' eccessive. allora supponiamo che la terra sia piatta e che due rette parallele si intersechino.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 25-10-2007, 20:21   #17
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
Quote:
Originariamente inviato da 71104 Guarda i messaggi
si ma come dicevo nel mio post precedente, mi era sembrato che avessi messo nell'ipotesi cose un po' eccessive. allora supponiamo che la terra sia piatta e che due rette parallele si intersechino.
Mi sa che quello che cercava di direti è che non è assolutamente garantito che sia il puntatore quello.
Un pò come il fatto che prima di Java 5 per quanto riguarda l'implementazione del Memory Manager vi era praticamente il vuoto e ognuno faceva un pò come cazz gli pareva.
Solo dalla versione 5 in poi è stata introdotta la relazione di ordering e la garanzia che le operazioni compiute seguissero una relazione di ordinamento (parziale).
Prima si andava solo a culo..
e se ti capitava un bug relativo a quel problema solo su certe implementazioni dela VM erano praticamente uccelli per diabetici
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 25-10-2007, 20:35   #18
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Le specifiche del linguaggio di programmazione Java, come tutte le specifiche di ogni linguaggio di programmazione, stabiliscono cosa sia "linguaggio Java" e cosa non lo sia.

Noi, in quanto studenti di quel linguaggio, dobbiamo valutare ogni affermazione alla luce di quel documento per decidere se sia o non sia riferibile al linguaggio di programmazione Java.

Se Tizio dicesse che il valore restituito dall'invocazione del metodo hashCode per un'istanza diretta di Object può essere cinque, direbbe una cosa ammissibile secondo le specifiche e, quindi, conforme a ciò che intendiamo con "linguaggio di programmazione Java"

Se Tizio dicesse che il valore restituito dall'invocazione di cui sopra è sempre cinque, direbbe una cosa non conforme alle specifiche vale a dire che starebbe parlando non del linguaggio di programmazione Java ma di qualcos'altro. Questo perchè l'hashCode di un'istanza diretta di Object è, per le specifiche, un qualsiasi valore di tipo int.

Nel nostro caso l'affermazione "il valore di hashCode() è quello del puntatore all'oggetto", a patto che il puntatore sia un valore non eccedente i 32 bit, è solo una delle possibilità consentite dalle specifiche. Più in generale, ogni regola che non contraddica alcuna norma indicata nelle specifiche del linguaggio X qualifica un'implementazione di X. Ecco che, allora, citare la faccenda del puntatore (che è verissima nel JRE a 32 bit di Sun), significa parlare non del linguaggio di programmazione Java ma di una concreta versione dello stesso. E non è una distinzione sottile perchè distinguere il linguaggio dalla sua implementazione significa anche poter distinguere tra programmi scritti in Java e programmi scritti in qualcos'altro: se io assumessi come vera l'affermazione secondo cui il valore di hashCode() corrisponde al valore del puntatore all'oggetto e scrivessi del codice che abbracci questa verità come sua precondizione otterrei codice non conforme alle specifiche e dunque non "Java".

Il glottologo è uno studioso di lingue: ti ho dato (amichevolmente&scherzosamente) del glottologo perchè ti impunti sui termini, a mo' di picchio. E picchiete picchiete picchiete... Lascia stare la parola e considera il senso del discorso. Altrimenti qui non ne saltiamo più fuori.
__________________
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 25-10-2007, 22:09   #19
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da ^TiGeRShArK^ Guarda i messaggi
Mi sa che quello che cercava di direti è che non è assolutamente garantito che sia il puntatore quello.
ah ma lo so

Quote:
[...] e se ti capitava un bug relativo a quel problema solo su certe implementazioni dela VM erano praticamente uccelli per diabetici
*volatili per diabetici
71104 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy? Google Pixel 10 è compatto e ha uno zoom ...
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre Prova GeForce NOW upgrade Blackwell: il cloud ga...
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco Ecovacs Deebot X11 Omnicyclone: niente più...
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio Narwal Flow: con il mocio orizzontale lava i pav...
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi Panasonic 55Z95BEG cala gli assi: pannello Tande...
Metroid Prime Beyond: arriva un trailer ...
Fujifilm GFX Eterna 55: una soluzione co...
Stardew Valley arriva su Switch 2: una c...
E-bike fat legale con "pulsante mag...
Nintendo Virtual Boy: l'accessorio per S...
Popucom si presenta come uno dei miglior...
Super Mario Galaxy il film: l'idraulico ...
Stellantis, contro risposta a BYD: "...
Microsoft evita una sanzione in Europa p...
TCL a IFA 2025: TV Mini LED, smartphone ...
Neanche la politica è salva: l'Al...
I nuovi Pixel 10 in mostra a Milano con ...
Perplexity di nuovo in tribunale: Merria...
AirPods 4 al minimo su Amazon: la versio...
Sam Altman sempre più convinto: l...
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: 19:47.


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