|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Messaggi: n/a
|
java autoboxing e unboxing
ciao a tutti guardate questo pezzo di codice di un libro:
Codice:
class Printarray
{
public print array() {}
public void printarray(Integer el[])
{
for (Integer i: el)
System.out.print(i+" " );
}
public void printarray(Character el[])
{
for (Character i: el)
System.out.print(i+" " );
}
public void printarray Double el[])
{
for Double i: el)
System.out.print(i+" " );
}
}
public class Printarrayclient
{
public static void main (String [] args)
{
Printarray pa=new Printarray();
Double d[]= (11.2, 11.1);
Integer i []=(12,13);
Character c[]=('a','b');
pa.printarray(d);
pa.printarray(i);
pa.printarray(c);
}
}
"nell assegnamento dei valori agli array possiamo vedere un altra utile caratteristica offerta da java che consente di convertire automaticamente un valore primitivo nel corrispondente oggetto (autoboxing) e di efffettuare l'operazoine inversa (autounboxing). per esempio nel nostro primitivo 11.1 è stato lecitamente inserito come elemento di un array di oggetti di tipo Double" ma come? gli array non contengono valori primitivi? perchè oggetti di tipo double? sono confuso.... Ultima modifica di vittorio130881 : 16-02-2013 alle 13:13. |
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2782
|
Probabilmente hai ricopiato male il codice, tieni conto che maiuscole e minuscole sono importanti. Inoltre racchiudi il codice nei tag CODE per mantenere l'indentazione anche qui sul forum.
|
|
|
|
|
|
#3 |
|
Messaggi: n/a
|
grazie wingman
e scusate la fretta. ora ho messo il codice paro paro. non credo serva mettere il nome del libro/autore. continuo a non capire.... |
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2782
|
L'autoboxing avviene nelle seguenti istruzioni:
Codice:
Double d[]= {11.2, 11.1};
Integer i []={12,13};
Character c[]={'a','b'};
http://docs.oracle.com/javase/6/docs...ng/Double.html http://docs.oracle.com/javase/6/docs...g/Integer.html http://docs.oracle.com/javase/6/docs...Character.html Sono anche detti wrapper dei valori primitivi corrispondenti, cioè double, int e char. I valori a destra delle assegnazioni sono array di literal: http://docs.oracle.com/javase/tutori...datatypes.html 11.2, 11.1 sono literal double 12, 13 sono literal int 'a', 'b' sono literal char I tipi primitivi non sono classi e quindi i valori corrispondenti non sono oggetti. Può capitare di aver bisogno di incapsulare questi valori dentro a degli oggetti. Per far questo si usano delle classi wrapper, che in java sono già definite per i tipi primitivi, nell'esempio sopra Double, Integer e Character. Se non esistesse l'autoboxing, per incapsulare un int dentro un oggetto Integer dovresti fare così: Codice:
Integer intObj = new Integer(12); Codice:
Integer intObj = 12; L'autounboxing è il processo inverso: Codice:
int intVal = intObj.intValue(); Codice:
int intVal = intObj; Nel codice che hai postato però mi sembra che non ci sia autounboxing, solo autoboxing. |
|
|
|
|
|
#5 |
|
Messaggi: n/a
|
Che dire grazie mille mi è tutto chiaro
Inviato dal mio GT-N7000 con Tapatalk 2 |
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:52.



















