जावा में ऐरे लंबाई


101

मैंने नीचे दिखाए अनुसार एक ऐरे को घोषित किया:

int[] arr = new int[10];

फिर मैंने सरणी के लिए निम्नलिखित मान निर्दिष्ट किए:

arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;

तब मैंने एक पूर्णांक चर घोषित किया और आरंभ किया:

int arrayLength = arr.length;

यह वास्तविक आकार खोजने के लिए उपयोगी होगा लेकिन क्या सरणी के तार्किक आकार को खोजने के लिए कोई विधि है?

जवाबों:


86

यह आवंटित आकार होता है, 10। अनसाइन किए गए इंडेक्स में डिफ़ॉल्ट मान होगा जो कि 0है int


3
हाँ, सरणियाँ स्थिर मेमोरी आवंटन हैं।
रेमन सारा

3
क्या आप जावदोक दिखा सकते हैं? मुझे नहीं पता कि यह "लंबाई" संपत्ति कहाँ है।
फिलिप रीगो

1
@PhilipRego यह भाषा विनिर्देशन में है docs.oracle.com/javase/specs/jls/se8/html/jls-10.html#jls-10.3
Torben

71

सबसे पहले, lengthएक संपत्ति है, इसलिए यह arr.lengthइसके बजाय होगा arr.length()

और यह 10, घोषित आकार वापस कर देगा। जिन तत्वों को आप स्पष्ट रूप से घोषित नहीं करते हैं, उन्हें 0 से आरंभ किया जाता है।


सरणी प्रकार पर लंबी लंबाई () नहीं लगा सकते [] जावा (67108980)
एलेसैंड्रो

22

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

यहां छवि विवरण दर्ज करें

लंबाई की संपत्ति हमेशा आरंभीकरण के दौरान सरणी को कुल आवंटित स्थान दिखाएगी।

यदि आपको कभी भी इस तरह की कोई समस्या है तो इसे चलाने का सरल तरीका है। हैप्पी प्रोग्रामिंग!


6

ऐरे स्थिर मेमोरी आवंटन हैं, इसलिए यदि आप पूर्णांक की एक सरणी को आरंभीकृत करते हैं:

int[] intArray = new int[15];

लंबाई हमेशा 15 होगी , चाहे कितने सूचकांक भरे जाएं।

और एक और बात, जब आप पूर्णांक की एक सरणी को सूचित करते हैं, तो सभी सूचकांक "0" से भर जाएंगे।


5

जावा में, आपके "वास्तविक" और "तार्किक" आकार समान हैं। रन-टाइम आवंटन पर डिफ़ॉल्ट मान के साथ सभी सरणी स्लॉट्स को भरता है। तो, आपके a10 शामिल हैं।


5

इस स्थिति में, arr.length 10 वापस आएगी, आपके द्वारा आवंटित सरणी का आकार। तार्किक आकार वास्तव में यहां लागू नहीं होता है, क्योंकि यह एक निश्चित लंबाई सरणी है।

जब आप सरणी को आरंभीकृत करते हैं:

int[] arr = new int[10];

जावा 10 तत्वों के साथ एक सरणी बनायेगा और इन सभी को 0. को इनिशियलाइज़ करेगा। इसके लिए प्रारंभिक मानों और अन्य प्राथमिक प्रकारों के विवरण के लिए जावा भाषा की युक्ति देखें ।


4
int[] arr = new int[10];

arrएक intप्रकार का सरणी है जिसका आकार है 10। यह 10तत्वों की एक सरणी है । यदि हम किसी सरणी को डिफ़ॉल्ट सरणी तत्वों से आरंभ नहीं करते हैं तो डिफ़ॉल्ट मान होता है। अंतर सरणी के मामले में डिफ़ॉल्ट मूल्य है 0

लंबाई एक संपत्ति है जो एक सरणी के लिए लागू होती है।
यहाँ arr.lengthदे देंगे 10


3

`

int array [] = new int [3]; array.length;

इसलिए यहां हमने 3 की मेमोरी स्पेस के साथ एक सरणी बनाई है ... यह वास्तव में कैसा दिखता है

0th 1st 2nd ...........> इंडेक्स 2 4 5 ...........> नंबर

तो जैसा कि आप देख रहे हैं कि इस सरणी का आकार 3 है, लेकिन सरणी का सूचकांक केवल 2 तक है क्योंकि कोई भी सरणी 0 वें सूचकांक से शुरू होती है।

दूसरी स्टेटमेंट 'आउटपुट 3 होगा क्योंकि एरे की लंबाई 3 है ... कृपया इंडेक्स वैल्यू और एरे की लंबाई के बीच भ्रमित न हों ...।

चियर्स!


2
  int arr[]={4,7,2,21321,657,12321};
  int length =arr.length;
  System.out.println(length); // will return 6

  int arr2[] = new int[10];
   arr2[3] = 4;
  int length2 =arr2.length;
  System.out.println(length2); // // will return 10. all other digits will be 0 initialize because staic memory initialization

1

इसमें सरणी का वास्तविक आकार होगा क्योंकि आपने इसे घोषित करते समय सरणी को आरंभीकृत किया था। जावा के पास किसी सरणी के "तार्किक" आकार की कोई अवधारणा नहीं है, जहां तक ​​कि यह 0 का डिफ़ॉल्ट मान है, यह उतना ही तार्किक है जितना आपके द्वारा सेट किए गए मान।


1

इसमें आवंटित आकार होता है, 10. शेष अनुक्रमणिकाओं में डिफ़ॉल्ट मान होगा जो 0 है।


1

यदि आप सरणी का तार्किक आकार चाहते हैं, तो आप सरणी में सभी मानों को पार कर सकते हैं और उन्हें शून्य के खिलाफ जांच सकते हैं। यदि शून्य नहीं है तो मूल्य बढ़ाएँ और यह तार्किक आकार होगा। क्योंकि सरणी का आकार निश्चित है, आपके पास कोई इनबिल्ट विधि नहीं है, हो सकता है कि आपके पास संग्रह पर एक नज़र होनी चाहिए।


यह सिर्फ एक "मुझे लगता है कि 0 एक मान्य मूल्य नहीं है" आकार है और यदि यह सहायक है तो एक तरह का संदेह है।
टॉम

मैं केवल सरणी की लंबाई (0 अमान्य है) प्राप्त करने के लिए एक विचार के साथ आया था। जैसा कि मैंने कहा कि आप अधिक सटीक डेटा हेरफेर के लिए संग्रह का उपयोग कर सकते हैं।
22

1

यह होना चाहिए:

int a = arr.length;

कोष्ठक से बचना चाहिए।


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

0

जावा सरणियां वास्तव में आकार में तय की जाती हैं, और अन्य उत्तर बताते हैं कि कैसे। गति वास्तव में वह नहीं कर रही है जिसकी आप अपेक्षा करेंगे। मैं केवल यह जोड़ना चाहूंगा कि आपके प्रश्न को आप जो उपयोग करना चाहते हैं वह एक ArrayList है, यह एक ऐसा सरणी है जो आपके लिए उपयोग कर सकता है और इसे बढ़ा सकता है:

https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html

यहां .size () विधि आपको अपनी सूची में तत्वों की संख्या दिखाएगा, और आप चीजों को जोड़ते हुए इसे बढ़ा सकते हैं।


0

यदि आप "तार्किक आकार", सरणी के सूचकांक से मतलब रखते हैं, तो बस intLength = arr.length -1; चूंकि सरणी इंडेक्स "0" से शुरू होता है, इसलिए तार्किक या "एरे इंडेक्स" हमेशा "एक" द्वारा वास्तविक आकार से कम होगा।


0

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

public int logicalArrayLength(type[] passedArray) {
    int count = 0;
    for (int i = 0; i < passedArray.length; i++) {
        if (passedArray[i] != defaultValue) {
            count++;
        }
    }
    return count;
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.