-8
votes

Différence Boolean [] B = {False} vs. Boolean B = Faux?

Quelle est la différence entre: xxx

et xxx

??

Il y a ni problème, les deux travaux. Je veux juste savoir quelle est la différence sur la mémoire par exemple. Quelle est la différence concernant les problèmes de préerformance ..


3 commentaires

tableau d'élément vs unique élément.


Le premier est un tableau de boolean s. Un tableau est une collection d'éléments (pas nécessairement seulement un). La seconde est juste un booléen .


C'est comme comparer la banane avec une boîte. Cela ressemble à XY problem Depuis l'aspect que vous souhaitez probablement dans une partie du code que vous ne nous montrez pas.


4 Réponses :


4
votes

boolean [] camerapermissiongranted = {faux}; Créer un tableau booléen, c'est le premier élément est false . .

camerapermission booléengranted = false; créer une variable booléenne, sa valeur est false . .


2 commentaires

Oui c'est clair, mais pourquoi quelqu'un utiliserait-il une première variante? Des problèmes de performance? Tout autre avantage?


Le tableau est un objet, au lieu d'une variable primitive, il peut donc être stocké sur une carte? (mais dans ce cas à l'aide d'un objet booléen est une meilleure solution)



3
votes

Différence entre ceux-ci est que

boolean[] cameraPermissionGranted = {false};
boolean cameraPermission = false;
List<Integer> list = new ArrayList<>();
list.forEach(a -> {
    cameraPermissionGranted[0] = true; // effectively final
    // cannot use cameraPermission
});


1 commentaires

Eh bien, ce n'est pas très intuitif. Atomicboolant serait mieux.



3
votes

Le premier crée un seul élément Boolean Array, l'autre crée un type booléen.

Le premier est souvent utilisé dans des endroits où la finale est requise et que la modification des éléments est souhaitable, telle que des fermetures, bien que les versions Java modernes introduisent d'autres techniques plus lisibles et moins subversives. Il est également quelque peu analogue au type de référence de C ++: vous pouvez transmettre la référence de la matrice à une fonction et que la fonction peut modifier l'élément de tableau et ces modifications seront vues par l'appelant.


0 commentaires

0
votes

Un motif de l'utilisation du premier serait d'imiter un C ++ transmet par référence em>. Considérez l'exemple suivant en C ++:

private void toggleValue(boolean[] b){
    b[0] = !b[0];
}


0 commentaires