जावा स्ट्रिंग ऐरे: क्या कोई विधि है?


152

मैं एक php बैकग्राउंड से आता हूँ और php में, एक array_size()फंक्शन होता है, जो आपको बताता है कि एरे में कितने एलिमेंट्स इस्तेमाल किए जाते हैं।

क्या किसी String[]सरणी के लिए एक समान विधि है ? धन्यवाद।


3
हे, सभी उत्तर एक ही मिनट के भीतर थे।
jjnguy

1
आह, PHP अपने बरबाद वैश्विक नामस्थान के साथ। अच्छे पुराने दिन ...
केविनजी

2
मुझे लगता है कि उनका मतलब है php की गिनती () नहीं array_size ()
जोशुआ बर्न्स

जवाबों:


277

हां, .length(संपत्ति जैसी, विधि नहीं):

String[] array = new String[10];
int size = array.length;

2
नमस्ते, हम ऐसे डॉक्स कैसे पा सकते हैं जो एरे ऑब्जेक्ट के सभी संभावित गुणों और कार्यों को सूचीबद्ध करते हैं? मेरा मतलब यह नहीं है कि Arrays ऑब्जेक्ट जो केवल डॉक्स है जो मुझे मिल सकता है।
GMsoF

1
@GMsoF "[]" (सरणी, एरेस ऑब्जेक्ट नहीं) के लिए प्रलेखन वास्तव में जावा विनिर्देशन है। .eg docs.oracle.com/javase/specs/jls/se7/html/jls-10.html संपादित करें: आह ... टिप्पणी 2013 की है ...
अकापुल्को

44
array.length

यह वास्तव में सरणी का एक अंतिम सदस्य है, न कि एक विधि।


2
IIRC, यह वास्तव में एक क्षेत्र नहीं है, यह सिर्फ एक जैसा दिखता है।
टॉम हॉल्टिन -

ओह, फिर क्या है? कुछ खास ऐरे बात?
jjnguy

3
एक "छद्म क्षेत्र" जो एक विशेष सरणी लंबाई सेशन-कोड के लिए संकलित किया जाता है, न कि फ़ील्ड एक्सेस ऑप-कोड के बजाय।
पीट किर्कम

2
यह एक फ़ील्ड है, जो §10.7 ( java.sun.com/docs/books/jls/third_edition/html/arrays.html#10.7 ) पर आधारित है: "सार्वजनिक अंतिम फ़ील्ड लंबाई, जिसमें सरणी के घटकों की संख्या शामिल है ( लंबाई सकारात्मक या शून्य हो सकती है)। "
माइकल मायर्स

19

इसके अलावा, शायद यह ध्यान रखना उपयोगी है कि यदि आपके पास कई आयामी ऐरे हैं, तो आप संबंधित आयाम को 'अक्ष [0] में जोड़कर उस सरणी को प्राप्त कर सकते हैं, जो आप तब तक क्वेरी कर रहे हैं जब तक कि आप उपयुक्त धुरी / ट्यूपल / आयाम पर नहीं पहुंच जाते।

यह संभवतः निम्नलिखित कोड के साथ समझाया गया है:

public class Test {
    public static void main(String[] args){
        String[][] moo = new String[5][12];

        System.out.println(moo.length); //Prints the size of the First Dimension in the array
        System.out.println(moo[0].length);//Prints the size of the Second Dimension in the array
    }

}

जो उत्पादन का उत्पादन करता है:

5
12

15

array.length अंतिम संपत्ति

यह सार्वजनिक और अंतिम संपत्ति है। यह अंतिम है क्योंकि जावा में सरणियाँ आकार से अपरिवर्तनीय हैं (लेकिन तत्व के मूल्य के अनुसार परिवर्तनशील)


14

ऐरे ऑब्जेक्ट्स हैं और उनकी लंबाई क्षेत्र है।

स्ट्रिंग [] हाहा = {"ओलल", "बुल्ले"};

haha.length 2 होगी


सिर्फ निपिक के लिए। लेकिन मेरा मानना ​​है कि सरणियाँ जावा में ऑब्जेक्ट नहीं हैं - वे दो संदर्भ प्रकारों में से एक हैं। दूसरी वस्तुएं।
जाबी

2
@ पंजाबी: वाक़ई? क्या आपके पास इसके लिए कोई संदर्भ है? मैं केवल इस पर सवाल करता हूं क्योंकि आप ऑब्जेक्ट ओ = नया स्ट्रिंग [] {"हैलो"} कह सकते हैं;
साइमन निकर्सन

simon मुझे लगता है कि कारण यह है कि बयान काम करता है, क्योंकि उन्होंने सभी आदिम प्रकारों के लिए प्रतिवर्त कक्षाएं शुरू की हैं।
ब्रायन स्वीनी

9
Docs.oracle.com/javase/specs/jls/se8/html/jls-10.html का पहला वाक्य पढ़ें और फिर हमें बताने का प्रयास करें कि सरणियाँ ऑब्जेक्ट नहीं हैं। ;)
माइकल मायर्स

1
आप किसी अन्य चर नाम का उपयोग कर सकते हैं, यह मेरे लिए बहुत विचलित करने वाला है
स्पेस रॉकर

11

जावा में एक ऐसा lengthक्षेत्र है जिसे आप किसी भी सरणी पर उपयोग कर सकते हैं यह पता लगाने के लिए कि इसका आकार क्या है:

    String[] s = new String[10];
    System.out.println(s.length);

1
यह क्या हो सकता है या नहीं हो सकता है, और बस एक संक्षिप्त और संक्षिप्त उत्तर प्रदान करने के बारे में तकनीकीताओं में नहीं आने के लिए धन्यवाद। आपके लिए +1। :)
जोशुआ बर्न्स

9

यदि आप ऐसा करने के लिए एक फ़ंक्शन चाहते हैं

Object array = new String[10];
int size = Array.getlength(array);

यह उपयोगी हो सकता है यदि आप नहीं जानते कि आपके पास किस प्रकार का सरणी है जैसे कि int [], बाइट [] या वस्तु []।


6

लंबाई Stringऔर arrayस्पष्टीकरण के बीच अंतर है :

int a[] = {1, 2, 3, 4};
String s = "1234";

a.length //gives the length of the array

s.length() //gives the length of the string

यदि यह स्पष्टीकरण है तो इसे प्रश्न में अपडेट किया जाना चाहिए।
व्हिटसेकट

5

जवाब है "उन सभी को"। एक जावा सरणी को तत्व स्लॉट की एक निश्चित संख्या के साथ आवंटित किया गया है। "लंबाई" विशेषता आपको बताएगी कि कितने। यह संख्या सरणी के जीवन के लिए अपरिवर्तनीय है। एक resizable समकक्ष के लिए, आपको java.util.List वर्गों में से एक की आवश्यकता है - जहां आप आकार () विधि का उपयोग करके पता लगा सकते हैं कि कितने तत्व उपयोग में हैं।

हालाँकि, वहाँ "उपयोग में" है और फिर वहाँ उपयोग में है । एक क्लास ऑब्जेक्ट एरे में, आपके पास ऐसे तत्व स्लॉट हो सकते हैं जिनके तत्व अशक्त वस्तुएं हैं, इसलिए भले ही वे लंबाई विशेषता में गिनते हों, लेकिन अधिकांश लोगों की परिभाषाएं, वे उपयोग में नहीं हैं (YMMV, एप्लिकेशन के आधार पर)। अशक्त / गैर-शून्य गिनती वापस करने के लिए कोई अंतर्निहित कार्य नहीं है।

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

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


2

उपरोक्त सभी उत्तर उचित हैं। निरीक्षण करने के लिए महत्वपूर्ण बात यह है कि सरणियों की लंबाई विशेषता है, लेकिन लंबाई विधि नहीं। जब भी आप जावा में स्ट्रिंग्स और सरणियों का उपयोग करते हैं तो आपके सामने आने वाले तीन बुनियादी मॉडल हैं:

  1. स्ट्रिंग s = नया स्ट्रिंग ("विद्यासागर");
    Println (s.length ()); // इस मामले में हम केवल स्ट्रिंग का उपयोग कर रहे हैं। स्ट्रिंग्स के लिए कोई लंबाई विशेषता नहीं। हमें लंबाई () विधि का उपयोग करना होगा।
  2. int [] s = नया int [10]; Println (s.length); // यहाँ हम सरणियों की लंबाई विशेषता का उपयोग करते हैं।
  3. स्ट्रिंग [] s = नया स्ट्रिंग [10];
    Println (s.length); // यहां डेटा टाइपिंग स्ट्रिंग होने के बावजूद यह एक स्ट्रिंग नहीं है। s स्ट्रिंग्स की सरणी के लिए एक संदर्भ है। तो हम एरे की लंबाई विशेषता का उपयोग यह व्यक्त करने के लिए करते हैं कि उस सरणी में कितने तार फिट हो सकते हैं।

1

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

आप आकार प्राप्त करने के लिए उस पर आकार () कॉल कर सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.