Συγκρίνετε την απόδοση των ακόλουθων αποσπασμάτων κώδικα που αντιγράφουν στοιχεία από έναν πίνακα Integer σε έναν πίνακα int και το αντίστροφο, συμπεριλαμβανομένης της περίπτωσης όπου δημιουργούνται νέα αντικείμενα Integer από τιμές int:
```java
int SIZE = 1000000;
int[] x = new int[SIZE];
Integer[] y = new Integer[SIZE];
for (;;) {
for (int i = 0; i < SIZE; ++i) {
x[i] = y[i];
}
}
```
```java
int SIZE = 1000000;
int[] x = new int[SIZE];
Integer[] y = new Integer[SIZE];
for (;;) {
for (int i = 0; i < SIZE; ++i) {
y[i] = x[i];
}
}
```
```java
int SIZE = 1000000;
int[] x = new int[SIZE];
Integer[] y = new Integer[SIZE];
for (;;) {
for (int i = 0; i < SIZE; ++i) {
y[i] = new Integer(x[i]);
}
}
```
Αναλύστε και εξηγήστε τις διαφορές στην απόδοση και τη συμπεριφορά μεταξύ αυτών των προσεγγίσεων.