आपका सवाल है कि "जावा अहस्ताक्षरित समर्थन का समर्थन क्यों नहीं करता है"?
: और अपने प्रश्न का मेरा उत्तर जावा चाहता है कि यह के सभी आदिम प्रकार है बाइट , चार , लघु , पूर्णांक और लंबे समय तक के रूप में व्यवहार किया जाना चाहिए बाइट , शब्द , DWORD और QWORD क्रमशः, वास्तव में विधानसभा में की तरह, और जावा ऑपरेटरों रहे हैं पर हस्ताक्षर किए चार को छोड़कर अन्य सभी प्रकार के संचालन आदिम प्रकार के होते हैं , लेकिन केवल चार पर ही उन्हें केवल 16 बिट का अहस्ताक्षरित किया जाता है।
तो माना जाता है कि स्थिर तरीके 32 और 64 बिट दोनों के लिए भी अहस्ताक्षरित संचालन हैं ।
आपको अंतिम वर्ग की आवश्यकता है, जिसके स्थिर तरीकों को अहस्ताक्षरित संचालन के लिए बुलाया जा सकता है ।
आप इस अंतिम वर्ग को बना सकते हैं, इसे जो चाहें नाम से पुकार सकते हैं और इसे स्थैतिक तरीकों से लागू कर सकते हैं।
यदि आपके पास स्थैतिक तरीकों को लागू करने के तरीके के बारे में कोई जानकारी नहीं है, तो यह लिंक आपकी मदद कर सकता है।
मेरी राय में, जावा है नहीं C ++ के समान सब पर है, अगर यह न अहस्ताक्षरित प्रकार का समर्थन है और न ही ऑपरेटर ओवरलोडिंग, इसलिए मुझे लगता है कि जावा दोनों सी ++ से और सी से पूरी तरह अलग भाषा के रूप में व्यवहार किया जाना चाहिए
यह भाषाओं के नाम से भी पूरी तरह से अलग है।
इसलिए मैं जावा को C के समान कोड टाइप करने की सलाह नहीं देता और मैं C ++ के समान कोड टाइप करने की सलाह नहीं देता, क्योंकि तब जावा में आप वह नहीं कर पाएंगे जो आप C ++ में करना चाहते हैं। यानी कोड C ++ की तरह जारी नहीं रहेगा और मेरे लिए यह कोड की तरह खराब है, बीच में स्टाइल बदलने के लिए।
मैं हस्ताक्षरित परिचालनों के लिए भी स्थैतिक विधियों को लिखने और उनका उपयोग करने की सलाह देता हूं, इसलिए आप संचालकों और सांकेतिक तरीकों के कोड मिश्रण में हस्ताक्षरित और अहस्ताक्षरित संचालन दोनों के लिए नहीं देखते हैं, जब तक कि आपको कोड में केवल हस्ताक्षरित संचालन की आवश्यकता न हो, और यह ठीक है केवल ऑपरेटरों का उपयोग करें।
इसके अलावा, मैं का उपयोग कर से बचने के लिए सलाह देते हैं कम , पूर्णांक और लंबे आदिम प्रकार, और उपयोग शब्द , DWORD और QWORD बजाय क्रमशः, और आप के बजाय अहस्ताक्षरित के संचालन के लिए स्थिर तरीकों कॉल कर रहे हैं के बारे में और / या हस्ताक्षर किए आपरेशन ऑपरेटरों का उपयोग कर की।
आप केवल हस्ताक्षर किए संचालन करते हैं और केवल कोड में ऑपरेटरों का उपयोग करने के बारे में हैं, तो यह इन आदिम प्रकार का उपयोग करना उचित है कम , पूर्णांक और लंबे समय तक ।
असल में शब्द , DWORD और QWORD करते नहीं भाषा में मौजूद हैं, लेकिन आप प्रत्येक के लिए नया वर्ग बना सकते हैं और प्रत्येक के कार्यान्वयन बहुत आसान होना चाहिए:
वर्ग शब्द आदिम प्रकार रखती कम ही, वर्ग DWORD आदिम प्रकार रखती है पूर्णांक केवल और वर्ग QWORD आदिम प्रकार धारण लंबे केवल। अब सभी अहस्ताक्षरित और हस्ताक्षर किए गए तरीके स्थिर या आपकी पसंद के अनुसार नहीं, आप प्रत्येक कक्षा में लागू कर सकते हैं, अर्थात सभी 16 बिट संचालन दोनों अहस्ताक्षरित हैं और शब्द वर्ग पर अर्थ नाम देकर हस्ताक्षर किए हैं , सभी 32 बिट संचालन दोनों अहस्ताक्षरित और पर अर्थ नाम देकर हस्ताक्षर किए DWORD वर्ग और सभी 64 बिट आपरेशन दोनों अहस्ताक्षरित और पर अर्थ नाम देकर हस्ताक्षर किए QWORD वर्ग।
यदि आप प्रत्येक विधि के लिए बहुत अधिक अलग-अलग नाम देना पसंद नहीं करते हैं, तो आप हमेशा जावा में ओवरलोडिंग का उपयोग कर सकते हैं, यह पढ़ने के लिए अच्छा है कि जावा ने उसे भी नहीं हटाया है!
यदि आप 8 बिट हस्ताक्षरित संचालन के लिए ऑपरेटरों के बजाय विधियाँ चाहते हैं और 8 बिट अहस्ताक्षरित संचालन के लिए तरीके जिनके पास कोई ऑपरेटर नहीं है, तो आप बाइट क्लास बना सकते हैं (ध्यान दें कि पहला अक्षर 'B' पूँजी है, इसलिए यह नहीं है आदिम प्रकार बाइट ) और इस वर्ग में विधियों को लागू करते हैं।
मूल्य से गुजरने और संदर्भ से गुजरने के बारे में:
अगर मैं गलत नहीं हूँ, सी # में की तरह, आदिम वस्तुओं मूल्य द्वारा पारित कर रहे हैं स्वाभाविक रूप से, लेकिन वर्ग वस्तुओं स्वाभाविक रूप से संदर्भ द्वारा पारित कर रहे हैं, तो इसका मतलब है कि प्रकार के ऑब्जेक्ट बाइट , शब्द , DWORD और QWORD मूल्य द्वारा संदर्भ द्वारा पारित हो जाएगा और नहीं डिफ़ॉल्ट रूप से। काश जावा था struct वस्तुओं के रूप में सी # है, तो सभी बाइट , शब्द , DWORD और QWORD होने के लिए लागू किया जा सकता struct के बजाय वर्ग, इसलिए डिफ़ॉल्ट रूप से वे मूल्य द्वारा पारित किए गए थे और डिफ़ॉल्ट रूप से संदर्भ द्वारा नहीं, जैसे C # में कोई भी संरचनात्मक वस्तु, जैसे कि आदिम प्रकार, मान द्वारा पारित किए जाते हैं और डिफ़ॉल्ट रूप से संदर्भ द्वारा नहीं, लेकिन क्योंकि जावा C # से भी बदतर है और हमारे पास है उससे निपटने के लिए, तब केवल कक्षाएं और इंटरफेस होते हैं, जिन्हें संदर्भ द्वारा पारित किया जाता है और डिफ़ॉल्ट रूप से मूल्य द्वारा नहीं। तो अगर आप पास करना चाहते हैं बाइट , शब्द , DWORD और QWORD , मूल्य से और नहीं वस्तुओं संदर्भ द्वारा जावा में है और यह भी सी # में किसी भी अन्य वर्ग वस्तु की तरह, आप के लिए बस प्रतिलिपि निर्माता का उपयोग करना होगा और बस इतना ही।
यही एकमात्र उपाय है जिसके बारे में मैं सोच सकता हूं। मैं केवल यह चाहता हूं कि मैं शब्द, डॉर्ड और qword के लिए आदिम प्रकार टाइप कर सकता हूं, लेकिन जावा न तो टाइप किए गए समर्थन का उपयोग कर रहा है और न ही सी # का उपयोग करने वाले सी # के विपरीत , जो कि सी के टाइप्डिफ के बराबर है।
उत्पादन के बारे में:
बिट्स के समान अनुक्रम के लिए , आप उन्हें कई तरीकों से प्रिंट कर सकते हैं: बाइनरी के रूप में, दशमलव के रूप में (सी प्रिंटफ में% u का अर्थ), अष्टक के रूप में (जैसे सी प्रिंटफ में% o का अर्थ है), हेक्साडेसिमल के रूप में (जैसे C प्रिन्ट में% x का अर्थ) और पूर्णांक के रूप में (जैसे सी प्रिन्ट में% d का अर्थ)।
ध्यान दें कि सी प्रिंटफ फ़ंक्शन के मापदंडों के रूप में पारित होने वाले चर के प्रकार को नहीं जानता है, इसलिए प्रिंटफ़ प्रत्येक चर के प्रकार को केवल फ़ंक्शन के पहले पैरामीटर को दिए गए चार * ऑब्जेक्ट से जानता है।
तो कक्षाओं में से प्रत्येक में: बाइट , शब्द , DWORD और QWORD , आप प्रिंट विधि लागू कर सकते हैं और printf की कार्यक्षमता प्राप्त है, भले ही वर्ग के आदिम प्रकार पर हस्ताक्षर किए है, तो आप अभी भी यह अहस्ताक्षरित के रूप में कुछ को शामिल कलन विधि का पालन करके प्रिंट कर सकते हैं तार्किक और शिफ्ट ऑपरेशन को अंक प्रिंट करने के लिए आउटपुट प्राप्त करने के लिए।
दुर्भाग्यवश जो लिंक मैंने आपको दिया है वह इन प्रिंट विधियों को लागू करने का तरीका नहीं दिखाता है, लेकिन मुझे यकीन है कि आप उन एल्गोरिदम के लिए Google कर सकते हैं जिन्हें आपको इन प्रिंट विधियों को लागू करने की आवश्यकता है।
यह सब मैं आपके प्रश्न का उत्तर दे सकता हूं और आपको सुझाव दूंगा।