Que fait le caractère pipe dans un appel de méthode Java?

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 |
  • la représentation au niveau du bit de 3 est:
 | 2 ^ 2 | 2 ^ 1 | 2 ^ 0 |
 |  4 |  2 |  1 |
 |  - |  X |  X |  => 3
  • la représentation au niveau du bit de 2 est:
 | 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.)