J’ai vu le caractère de pipe utilisé dans les appels de méthode dans les programmes Java.
Par exemple:
public class Testing1 { public int print(int i1, int i2){ return i1 + i2; } public static void main(Ssortingng[] args){ Testing1 t1 = new Testing1(); int t3 = t1.print(4, 3 | 2); System.out.println(t3); } }
Quand je lance ceci, je reçois simplement 7
.
Quelqu’un peut-il expliquer ce que le tube appelle dans la méthode et comment l’utiliser correctement?
Le tuyau en 3 | 2
3 | 2
est l’opérateur OU inclusif au niveau du bit , qui renvoie 3 dans votre cas ( 11 | 10 == 11
en binary).
c’est un bitwise OU.
La représentation binary des nombres est la suivante:
| 2 ^ 2 | 2 ^ 1 | 2 ^ 0 | | 4 | 2 | 1 |
| 2 ^ 2 | 2 ^ 1 | 2 ^ 0 | | 4 | 2 | 1 | | - | X | X | => 3
| 2 ^ 2 | 2 ^ 1 | 2 ^ 0 | | 4 | 2 | 1 | | - | X | - | => 2
Le OU au niveau du bit retournera 3 car lors de l’utilisation de OU, au moins un bit doit être “occupé”. Puisque le premier et le second bit sont occupés (3 | 2), le résultat sera 3.
Enfin, l’addition 4 + 3 = 7.
Le |
L’opérateur effectue un OU au niveau des opérandes:
3 | 2 ---> 0011 (3 in binary) OR 0010 (2 in binary) --------- 0011 (3 in binary)
Voici le motif:
0 OR 0: 0 0 OR 1: 1 1 OR 0: 1 1 OR 1: 1
Utiliser |
:
if(someCondition | anotherCondition) { /* this will execute as long as at least one condition is true */ }
Notez que ceci est similaire au court-circuit OU ( ||
) couramment utilisé dans les instructions if
:
if(someCondition || anotherCondition) { /* this will also execute as long as at least one condition is true */ }
(sauf que ||
n’impose pas la nécessité de continuer à vérifier d’autres conditions une fois qu’une expression vraie a été trouvée.)