java - जावा में लंबाई और लंबाई()



arrays string (6)

जब भी कोई सरणी बनाई जाती है, तो इसका आकार निर्दिष्ट होता है। तो लंबाई निर्माण निर्माण के रूप में माना जा सकता है। स्ट्रिंग के लिए, यह अनिवार्य रूप से एक चार सरणी है। लंबाई चार सरणी की एक संपत्ति है। एक क्षेत्र के रूप में लंबाई डालने की कोई जरूरत नहीं है, क्योंकि सब कुछ इस क्षेत्र की जरूरत नहीं है। http://www.programcreek.com/2013/11/start-from-length-length-in-java/

https://ffff65535.com

हमारे पास एक विशेषता, सरणी। लम्बाई के रूप में एक सरणी की लंबाई क्यों है, और स्ट्रिंग के लिए हमारे पास एक विधि है, str.length() ?

क्या कोई कारण है?


जावा में, एक ऐरे उस संरचना से अलग लंबाई को स्टोर करता है जो वास्तव में डेटा रखता है। जब आप एक ऐरे बनाते हैं, तो आप इसकी लंबाई निर्दिष्ट करते हैं, और यह ऐरे की परिभाषित विशेषता बन जाता है। कोई फर्क नहीं पड़ता कि आप लंबाई एन के एक ऐरे (मूल्य बदलें, शून्य चीजें, इत्यादि) में क्या करते हैं, यह हमेशा लंबाई एन का एक ऐरे होगा।

एक स्ट्रिंग की लंबाई आकस्मिक है; यह स्ट्रिंग की विशेषता नहीं है, बल्कि एक उपज है। हालांकि जावा स्ट्रिंग वास्तव में अपरिवर्तनीय हैं, अगर उनकी सामग्री को बदलना संभव था, तो आप उनकी लंबाई बदल सकते हैं। अंतिम चरित्र को दस्तक देना (यदि यह संभव था) लंबाई कम कर देगा।

मैं समझता हूं कि यह एक अच्छा भेद है, और मैं इसके लिए मतदान कर सकता हूं, लेकिन यह सच है। यदि मैं लम्बाई 4 का ऐरे बनाता हूं, तो चार की लंबाई ऐरे की परिभाषित विशेषता है, और यह सच है कि इसमें क्या हो रहा है। अगर मैं एक स्ट्रिंग बनाता हूं जिसमें "कुत्ते" होते हैं, तो स्ट्रिंग लंबाई 4 है क्योंकि इसमें चार वर्ण होते हैं।

मैं इसे एक विशेषता के साथ एक और एक विधि के साथ एक करने के लिए औचित्य के रूप में देखते हैं। सच में, यह सिर्फ एक अनजान असंगतता हो सकती है, लेकिन यह हमेशा मेरे लिए समझ में आता है, और यह हमेशा होता है कि मैंने इसके बारे में क्या सोचा है।


मुझे पहले इसी उद्देश्य के लिए तीन अलग-अलग तरीकों को हाइलाइट करने दें।

length - सरणी ( int[] , double[] , String[] ) - सरणी की लंबाई जानने के लिए

length() - स्ट्रिंग से संबंधित वस्तु ( String , String , आदि) - स्ट्रिंग की लंबाई जानने के लिए

size() - संग्रह ऑब्जेक्ट ( ArrayList , Set , आदि) - संग्रह के आकार को जानने के लिए

अब length() बारे में भूल जाओ length और size() विचार करें।

length एक विधि नहीं है, इसलिए यह पूरी तरह से समझ में आता है कि यह वस्तुओं पर काम नहीं करेगा। यह केवल सरणी पर काम करता है।
size() इसका नाम बेहतर वर्णन करता है और जैसा कि यह एक विधि है, इसका उपयोग उन वस्तुओं के मामले में किया जाएगा जो संग्रह (संग्रह ढांचे) के साथ काम करते हैं जैसा कि मैंने वहां कहा था।

अब length() आओ:
स्ट्रिंग एक आदिम सरणी नहीं है (इसलिए हम .length उपयोग नहीं कर सकते हैं) और संग्रह भी नहीं (इसलिए हम .size() उपयोग नहीं कर सकते हैं) यही कारण है कि हमें एक अलग की आवश्यकता है जो length() (मतभेद रखें और सेवा करें उद्देश्य)।

जवाब के रूप में क्यों?
मुझे यह उपयोगी, याद रखने में आसान और उपयोग और अनुकूल लगता है।


मुझे सिखाया गया था कि सरणी के लिए, निम्न डर के कारण किसी विधि के माध्यम से लंबाई पुनर्प्राप्त नहीं की जाती है: प्रोग्रामर लूप दर्ज करने से पहले स्थानीय चर को लंबाई निर्दिष्ट करेंगे (लूप के लिए सोचें जहां सशर्त सरणी की लंबाई का उपयोग करता है।) प्रोग्रामर माना जाता है कि फ़ंक्शन कॉल पर ट्रिम करने के लिए ऐसा किया जाएगा (और इस प्रकार प्रदर्शन में सुधार होगा।) समस्या यह है कि लूप के दौरान लंबाई बदल सकती है, और चर नहीं होगा।


विचार करें:

int[] myArray = new int[10];
String myString = "hello world!";
List<int> myList = new ArrayList<int>();

myArray.length    // Gives the length of the array
myString.length() // Gives the length of the string
myList.size()     // Gives the length of the list

यह बहुत संभावना है कि तारों और सरणी अलग-अलग समय पर डिजाइन किए गए थे और इसलिए विभिन्न सम्मेलनों का उपयोग करके समाप्त हो गए। एक औचित्य यह है कि स्ट्रिंग्स आंतरिक रूप से सरणी का उपयोग करते हैं, इसलिए एक विधि, length() का उपयोग उसी जानकारी के डुप्लिकेशन से बचने के लिए किया जाता था। दूसरा यह है कि एक विधि length() का उपयोग तारों की अपरिवर्तनीयता पर जोर देने में मदद करता है, भले ही सरणी का आकार भी अपरिवर्तनीय हो।

आखिरकार यह सिर्फ एक असंगतता है जो विकसित हुआ है कि निश्चित रूप से तय किया जाएगा यदि भाषा को जमीन से फिर से डिजाइन किया गया था। जहां तक ​​मुझे कोई अन्य भाषा नहीं है (सी #, पायथन, स्कैला, इत्यादि) वही काम करते हैं, इसलिए यह संभवतः थोड़ी सी दोष है जो भाषा के हिस्से के रूप में समाप्त हो जाती है।

यदि आप गलत तरीके से किसी भी तरह का उपयोग करते हैं तो आपको एक त्रुटि मिल जाएगी।


.length जावा की एक बंद संपत्ति है। इसका उपयोग एकल आयामी सरणी के आकार को खोजने के लिए किया जाता है।

.length() एक विधि है। इसका उपयोग String की लंबाई को खोजने के लिए किया जाता है। यह मूल्य को डुप्लिकेट करने से बचाता है।





string