2013-05-08 7 views
7

Ho visto il carattere pipe usato nelle chiamate di metodo nei programmi Java.Cosa fa il carattere pipe in una chiamata al metodo Java?

Ad esempio:

public class Testing1 { 

    public int print(int i1, int i2){ 
     return i1 + i2; 
    } 
    public static void main(String[] args){ 
     Testing1 t1 = new Testing1(); 
     int t3 = t1.print(4, 3 | 2); 
     System.out.println(t3); 
    } 
} 

Quando eseguo questo, ho semplicemente capito 7.

Qualcuno può spiegare cosa fa il tubo nella chiamata al metodo e come usarlo correttamente?

+0

controllare questo collegamento http://stackoverflow.com/questions/7226538/how-to-use-pipe-symbol-in-java – Srinivas

risposta

13

Il tubo in 3 | 2 è l'operatore bitwise inclusive OR, che restituisce 3 nel tuo caso (11 | 10 == 11 in binario).

+5

No esegue un OR bit a bit, mantenendo tutti i bit impostati su 1 in uno degli operandi. Ad esempio, '2 | 1' => '10 | 01' => '11' =>' 3' - un altro: '6 | 5' => '110 | 101' => '111' =>' 7' etc ... – assylias

+1

Puoi spiegare in un modo questo sarebbe utile? – CodyBugstein

+1

Ad esempio per passare diverse opzioni: 'int opzione1 = 1, opzione2 = 2, opzione3 = 4, opzione4 = 8' (quindi in binario: 1, 10, 100, 1000). Puoi quindi fare qualcosa del tipo: 'method (option1 | option2 | option3)' per dire che vuoi tutte quelle opzioni usate. Nel metodo, puoi fare 'argument & 1' per vedere se l'opzione 1 è stata selezionata.Ora non è qualcosa che useresti ogni giorno ma può essere utile in alcune situazioni specifiche. – assylias

7

è un bit a OR.

La rappresentazione bitwise di numeri è così:

 
|2^2|2^1|2^0| 
| 4 | 2 | 1 | 
  • rappresentazione bitwise di 3 è:
 
|2^2|2^1|2^0| 
| 4 | 2 | 1 | 
| - | X | X | => 3 
  • rappresentazione bitwise di 2 è:
 
|2^2|2^1|2^0| 
| 4 | 2 | 1 | 
| - | X | - | => 2 

L'OR bit a bit restituirà 3 perché quando si utilizza OR almeno un bit deve essere "occupato". Poiché il primo e secondo bit sono occupati (3 | 2) restituirà 3.

Infine, l'aggiunta 4 + 3 = 7.

1

L'operatore | esegue un OR bit a bit degli operandi

3 | 2 ---> 0011 (3 in binary) 
      OR 0010 (2 in binary) 
      --------- 
       0011 (3 in binary) 

Ecco lo schema:

0 OR 0: 0 
0 OR 1: 1 
1 OR 0: 1 
1 OR 1: 1 

Utilizzando |:

if(someCondition | anotherCondition) 
{ 
    /* this will execute as long as at least one 
     condition is true */ 
} 

noti che questo è simile alla short-circuit OR (||) comunemente usato in if dichiarazioni:

if(someCondition || anotherCondition) 
{ 
    /* this will also execute as long as at least one 
     condition is true */ 
} 

(tranne che || non impone la necessità di continuare il controllo altre condizioni volta una vera espressione è stata trovato.)