Ciao, ho due esercizi semplici su cui ho qualche dubbio.
1) Ho un programma del genere e devo dire cosa mi stampa il main.
codice:
class A {
int x;
}
class PP {
static void metUno(int a) {
a = 0;
}
static void metDue(int[] a) {
a[0] = 0;
}
static void metTre(int[] a) {
a = null;
}
static void metQuattro(A a) {
a = null;
}
static void metCinque(A a) {
a.x = 0;
}
public static void main(String[] args) {
int i1 = 5;
metUno(i1);
System.out.println(i1);
int[] a1 = new int[] {5, 5};
metDue(a1);
System.out.println(a1[0]);
int[] a2 = new int[] {5, 5};
metTre(a2);
System.out.println(a2[0]);
A o1 = new A();
o1.x = 5;
metQuattro(o1);
System.out.println(o1.x);
A o2 = new A();
o2.x = 5;
metCinque(o2);
System.out.println(o2.x);
}
}
La soluzione mi dice che viene stampato: 5 0 5 5 0. Qualcuno mi spiega il perchè?
Io avrei detto che viene stampato: 0 0 null null 0. Inoltre non ho capito cosa fa metCinque e o2.x = 5 cosa vuol dire?
2) Dato questo programma

Devo dire cosa stampa il main in questi casi:
- a. X è 0, Y è A
b. X è 0, Y è B
c. X è 1, Y è A
d. X è 1, Y è B
Qui non ho proprio capito l'esercizio, cosa sono X, Y, A e B?
Grazie in anticipo!