2013-05-08 38 views
7

Tôi đã nhìn thấy ký tự ống được sử dụng trong các cuộc gọi phương thức trong các chương trình Java.Nhân vật đường ống làm gì trong một phương thức Java gọi?

Ví dụ:

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); 
    } 
} 

Khi tôi chạy này, tôi chỉ đơn giản là có được 7.

Ai đó có thể giải thích những gì ống dẫn trong cuộc gọi phương thức và cách sử dụng đúng cách?

+0

kiểm tra liên kết này http://stackoverflow.com/questions/7226538/how-to-use-pipe-symbol-in-java – Srinivas

Trả lời

13

Đường ống trong 3 | 2 là toán tử bitwise inclusive OR, trả về 3 trong trường hợp của bạn (11 | 10 == 11 ở dạng nhị phân).

+5

Không, nó thực hiện một bit OR, bằng cách giữ lại tất cả các bit được đặt thành 1 trong một trong các toán hạng. Ví dụ: '2 | 1' => '10 | 01' => '11' =>' 3' - một số khác: '6 | 5' => '110 | 101' => '111' =>' 7' vv ... – assylias

+1

Bạn có thể giải thích một cách điều này hữu ích không? – CodyBugstein

+1

Ví dụ để chuyển một số tùy chọn: 'int option1 = 1, option2 = 2, option3 = 4, option4 = 8' (như vậy trong nhị phân: 1, 10, 100, 1000). Sau đó bạn có thể làm một cái gì đó như: 'phương pháp (option1 | option2 | option3)' để nói rằng bạn muốn tất cả những tùy chọn được sử dụng. Trong phương thức, bạn có thể làm 'đối số & 1' để xem tùy chọn 1 đã được chọn hay chưa.Bây giờ nó không phải cái gì mà bạn muốn sử dụng hàng ngày nhưng nó có thể hữu ích trong một số tình huống cụ thể. – assylias

7

đó là một bitwise HOẶC.

Các đại diện Bitwise số là như thế này:

 
|2^2|2^1|2^0| 
| 4 | 2 | 1 | 
  • đại diện Bitwise của 3 là:
 
|2^2|2^1|2^0| 
| 4 | 2 | 1 | 
| - | X | X | => 3 
  • đại diện Bitwise của 2 là:
 
|2^2|2^1|2^0| 
| 4 | 2 | 1 | 
| - | X | - | => 2 

Bitwise HOẶC sẽ trả về 3 vì khi sử dụng HOẶC ít nhất một bit phải "bị chiếm đóng". Kể từ khi bit đầu tiên và thứ hai đang bị chiếm đóng (3 | 2) sẽ trở lại 3.

Cuối cùng, việc bổ sung 4 + 3 = 7.

1

Nhà điều hành | thực hiện một bitwise OR vào toán hạng:

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

Dưới đây là các mô hình:

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

Sử dụng |:

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

Lưu ý rằng đây là giống với short-circuit OR (||) thường được sử dụng trong if báo cáo:

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

(trừ || mà không thực thi sự cần thiết phải tiếp tục kiểm tra các điều kiện khác từng là một biểu hiện thật đã được tìm thấy.)

Các vấn đề liên quan