Domanda

Secondo Oracle dovrei essere in grado di applicare metodi come .intValue() e .compareTo() a doppie ma quando scrivo dbl.toString() in NetBeans, ad esempio, l'IDE mi dice che doppie non possono essere dereferenziati. Non riesco nemmeno a gettarli in interi in forma (Integer) dbl!
Ho JDK 1.6 e NetBeans 6.9.1. Qual è il problema qui?

È stato utile?

Soluzione

Il problema è la comprensione degli oggetti contro primitive.

Più di ogni altra cosa, non vi resta che riconoscere che i nomi capitalizzati sono classi di oggetti che atto come primitivi, che sono davvero necessario solo quando è necessario inviare i dati da primitivi in ??un metodo che solo accetta oggetti. Il cast non è riuscita perché si stava tentando di lanciare un primitivo (doppia) per un oggetto (intero) al posto di un altro primitivo (int).

Ecco alcuni esempi di lavoro con primitive vs oggetti:

La classe doppio ha un metodo statico toString ():

double d = 10.0;
// wrong
System.out.println(d.toString());
// instead do this
System.out.println(Double.toString(d));

Altri metodi possono utilizzare gli operatori direttamente, piuttosto che chiamare un metodo.

double a = 10.0, b = 5.0;

// wrong
if( a.compareTo(b) > 0 ) { /* ... */ }
// instead you can simply do this:
if( a >= b) { /* ... */ }

int a = 0;
double b = 10.0;

// wrong
a = b.intValue();
// perform the cast directly.
a = (int)b;

Altri suggerimenti

I metodi che stai citano si trovano sulla classe doppia (e non nel tipo doppia primitivo). E 'sempre più efficiente utilizzare tipi primitivi, ma se avete assolutamente bisogno di questi metodi, creare un nuovo oggetto doppio in questo modo:

double d = 10.0;
Double myDouble = new Double(d);

doppia è una primitiva non un oggetto. Come tale, non ha metodi. In generale ciò che si vuole fare è utilizzare la lingua come.

double d = 1.1;
System.out.println("d= "+d); // calls Double.toString(d) for you.

int i = (int) d; // more efficient than new Double(d).intValue();

if (d >= 1.0) // does a compare.

Forse, se si dice ciò che si sta cercando di ottenere che possiamo puntare al codice Java, che lo farà.

Ogni oggetto ha un metodo toString, quindi forse il vostro JDK non è configurato correttamente in NetBeans.

Si desidera (java.lang.)Double non il double primitivo

tipi nativi (int, float, double, ecc) non hanno metodi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top