2015-04-18 11 views
5

मैं डेटा संरचनाएं और विश्लेषण ले रहा हूं। हम इस बात पर चले गए हैं कि ऑब्जेक्ट प्रकारों की असाइनमेंट और तुलना असाइनमेंट और इंट जैसे बुनियादी प्रकारों की तुलना में बहुत धीमी है।जावा 'पॉइंटर्स' पूर्णांक हैं?

मुझे सी सीखना याद है (उन सभी लगभग तीस साल पहले) और सी में पॉइंटर्स पूर्णांक कॉल (या थे) थे। जावा समान आज एक instanced वस्तु आंतरिक स्मृति के एक पूर्णांक पते के लिए एक संदर्भ है, और इस तरह के रूप में ऐसी

if (MyObject != null) {...} 

ढांचे के भीतर एक पूर्णांक आपरेशन के रूप में तुलना कर रहे हैं है?

मुझे आशा है कि मेरा प्रश्न स्पष्ट है। मैं चारों ओर शोध कर रहा हूं और जावा का गतिशील स्मृति कैसे प्रबंधित करता है इसका स्पष्ट उत्तर नहीं मिल रहा है।

+1

मुझे यह पोस्ट खतरनाक रूप से भ्रमित लगता है। आप यह समझते हैं कि "ऑब्जेक्ट तुलना धीमी है", और तुलनात्मक पॉइंटर्स तेज़ और इसलिए बेहतर है। लेकिन वे पूरी तरह से अलग चीजें हैं। एक मूल्य समानता के बारे में है और दूसरा वस्तु पहचान के बारे में है। पायथन में एक समानता देने के लिए, एक '99 == 99' है, और दूसरा लगभग 301 है 301' –

+0

मैं इंसिन्यूटिंग नहीं कर रहा हूं, मैं पूछ रहा हूं। आपके सहयोग के लिए धन्यवाद। – failure

+0

जावा में सभी मान आंतरिक रूप से "पूर्णांक" हैं, जिसमें फ़्लोटिंग-पॉइंट नंबर शामिल हैं। यह एक बात है कि उनका व्याख्या कैसे किया जाता है। लेकिन आप * ऑब्जेक्ट्स * की तुलना के साथ * पॉइंटर्स * की तुलना में भ्रमित कर रहे हैं - दो पूरी तरह से अलग चीजें। '==' के साथ दो जावा" पॉइंटर्स "(संदर्भ) के बीच की तुलना दो * लंबी * मानों की तुलना में तेज़ है। –

उत्तर

3

कम जवाब है हां, एक वस्तु के लिए एक संदर्भ है जैसे कि यह सी

में है सूचक के रूप में संग्रहीत किया जाता है है मुझे यकीन है कि आप "पूर्णांक" के रूप में जमा से क्या मतलब है नहीं कर रहा हूँ, लेकिन अगर आप चाहते करने के लिए है उन पर कुछ ऑपरेशन करें जैसे आप सी में कर सकते हैं (उदाहरण के लिए एक पॉइंटर इत्यादि को पूर्णांक जोड़ें), फिर आप जावा के साथ नहीं कर सकते हैं।

बाकी के लिए, यह जावा के द्वारा संभाला जाता है इसके अलावा यह काफी समान है।

JLS 4.3.1 निर्दिष्ट करता है कि एक वस्तु के लिए एक संदर्भ सूचक के रूप में संग्रहीत किया जाता है:

संदर्भ मूल्यों (अक्सर बस संदर्भ) इन वस्तुओं की ओर इशारा, और एक विशेष अशक्त संदर्भ है, जो के लिए संदर्भित करता हैं कोई वस्तु नहीं।

+0

सी, मूल, पूर्व-एएनएसआई सी में, पॉइंटर्स पूर्णांक थे और इसलिए पॉइंटर्स पर ऑपरेशन, विशेष रूप से, असाइनमेंट, एक पूर्णांक पर एक ऑपरेशन जितना तेज होता है। मैं प्रत्यक्ष नियंत्रण की तलाश नहीं कर रहा हूं, मैं सिर्फ उत्सुक हूं कि इस तरह के संचालन पर ओवरहेड क्या है। धन्यवाद! – failure

+0

@ विफलता आपका स्वागत है। –

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