2010-07-08 8 views
6

जावा कैसे तर्कों को अलग करता है | ?जावा द्वारा तर्कों को अलग करने वाले तर्क कैसे हैं?

उदाहरण

private void foo(int i) { 
    System.out.println(i); 
} 

private void bar() { 
    foo(1 | 2 | 1); 
} 

कौन सा उत्पादन

3 

मैं इस SWT/JFace विजेट कंस्ट्रक्टर्स में इस्तेमाल देखा है देना होगा के लिए

। मुझे पता नहीं लगा सकता कि i का मूल्य कैसे तय किया जाता है।

+1

आप जानते हैं कि | एक विभाजक नहीं है, यह थोड़ा सा है या ऑपरेटर – Goibniu

+1

मैं वास्तव में जावा में कभी भी बिटवाई ऑपरेटरों में नहीं चला हूं, शायद यही कारण है कि मुझे इसका एहसास नहीं हुआ, अब यह बहुत अधिक समझ में आता है। – Ozsie

उत्तर

8

| थोड़ा सा या ऑपरेटर है।

foo(1 | 2 | 1); 

का मतलब तर्क के साथ कॉल foo 1 बिटवाइज़-या 2 बिटवाइज़-या 1

  • बाइनरी में 101
  • 2 बाइनरी में 10

बिटवाइस है या 01 और 10 की 11 जो दशमलव में 3 है है।

ध्यान दें कि | ऑपरेटर का उपयोग बूलियन के लिए भी किया जा सकता है। || ऑपरेटर से अंतर यह है कि दूसरा ऑपरेंड मूल्यांकन किया जाता है भले ही पहला ऑपरेंड true पर मूल्यांकन करता हो।

वास्तव में, सभी बिटवाइज़ ऑपरेटर्स के साथ-साथ बूलियन्स पर काम करते हैं, XOR ^ भी शामिल है। हालांकि, कोई संबंधित लॉजिकल ऑपरेटर नहीं है। (यह अनावश्यक होगा, क्योंकि ^ का "आलसी" मूल्यांकन करने का कोई तरीका नहीं है :)

+1

"दूसरे ऑपरेंड के लिए +1 का मूल्यांकन किया जाता है भले ही पहला ऑपरेंड सत्य साबित हो", उसे नहीं पता था। – f1sh

2

यह bitwise OR operator का उपयोग कर रहा है। शुरुआत के लिए, 1 | 1 = 1 तो दूसरा 1 अनावश्यक है। अगर हम अनावश्यक 1 को हटाते हैं तो हम समीकरण 1 | 2 = 3 के साथ छोड़े जाते हैं।

01 | 10 = 11

या ऑपरेटर प्रत्येक से इसी बिट्स या मूल्यों से मेल खाने लगेगा और अगर वहाँ या तो या किसी विशिष्ट स्थान के दोनों मूल्यों में एक 1 है,: 2 बिट में इसे देख बाइनरी यह कैसा दिखता नतीजा 1 है। यदि संबंधित बिट्स दोनों के लिए दोनों मान हैं तो परिणाम 0.

संबंधित मुद्दे

 संबंधित मुद्दे