Quel est le point d'avoir Integer
, Boolean
etc et les appeler "... boxe" si elles ne se comportent pas comme des objets en boîte que vous pouvez passer "par ref" et faire unboxing pour changer leur valeur?Quel est le but des primitives à autoboxing dans Java?
Voici un exemple de "déballage" qui, en fait, n'a pas vraiment déballé.
public static void main(String[] args) {
Boolean x = true;
foo(x);
System.out.println(x);
Integer num = 9;
bar(num);
System.out.println(num);
}
private static void bar(Integer num) {
num = 5;
}
static void foo(Boolean x){
boolean y = false;
x = y;
}
il imprime vrai et 9 btw.
Java est * passe par la valeur *, toujours, sans exception. Vous modifiez la référence dans la méthode, ce qui n'affectera pas la valeur d'origine transmise. Rappelez-vous également que 'Integer' est * immuable *. – Maroun
Mais «num = 5» n'est-il pas considéré comme unboxing? Donc, cela change la valeur à l'intérieur de l'objet et la référence à cet objet est la même. @MarounMaroun – shinzou