2015-09-07 13 views
10

Tôi vừa mới biết rằng | được sử dụng để bắt nhiều ngoại lệ trong cùng một khối; | là toán tử bitwise cho OR. Trong trường hợp này, nó vẫn được sử dụng như một toán tử bitwise hay nó có một ý nghĩa khác khi trong ngữ cảnh?Tại sao toán tử OR bitwise (|) được sử dụng khi bắt nhiều ngoại lệ trong Java?

+0

Tại sao bạn nghĩ đó là toán tử * bitwise * OR chứ không phải toán tử * boolean * OR? Nó không phải, nó chỉ là một cấu trúc cú pháp, có nghĩa là ngoại lệ này * HOẶC * ngoại lệ * HOẶC * ..., và là một lựa chọn rất hợp lý của biểu tượng, bạn có nghĩ vậy không? – Andreas

+0

Nhưng không phải là '||' được sử dụng như toán tử OR boolean? – platelminto

+0

Điều đó nữa, vâng. Cả hai '|' và '||' là toán tử OR boolean. Tôi sẽ để nó cho bạn đọc tài liệu để tìm ra sự khác biệt là gì. Lưu ý rằng điều tương tự cũng áp dụng cho toán tử AND '&' và '&&'. – Andreas

Trả lời

18

Trong trường hợp này, nó vẫn được sử dụng như một toán tử bitwise hay nó có ý nghĩa khác khi trong ngữ cảnh?

Nó có ý nghĩa khác - mặc dù nó có cùng "hương vị" ở chỗ đó là "nếu ngoại lệ X bị bắt hoặc ngoại lệ Y bị bắt hoặc ngoại lệ Z".

Trong JLS section 14.20| chỉ được bao gồm theo nghĩa đen trong ngữ pháp - nó không phải là toán tử OR trong ngữ cảnh này.

+0

Cảm ơn! Điều này tương tự như cách toán tử '+' hoạt động; khi nó được sử dụng trong các chuỗi, nó liên kết, trong khi với các con số nó thêm chúng - về mặt kỹ thuật nó được thêm vào trong cả hai trường hợp, phải không? – platelminto

+1

@platelminto: Không hoàn toàn - toán tử + vẫn là toán tử nhị phân + theo cú pháp thông thường; nó chỉ là toán hạng làm cho nó nối chuỗi. –

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