जवाबों:
वे शब्दार्थ समान हैं। int array[]
वाक्य रचना केवल मदद C प्रोग्रामर से जोड़ा गया था जावा आदत हो।
int[] array
बहुत बेहतर है, और कम भ्रामक है।
int array[]
वाक्यविन्यास है। साथ ही तार्किक ... कुछ ट्विस्टेड तरीके से। :)
int array[]
मेरे लिए ज्यादा मायने रखता है। इस घोषणा के बारे में आप क्या सोचते हैं? int[] x, y
? है y
एक सरणी है या नहीं? शायद यह है, शायद यह नहीं है। केवल जावा के गुरु विश्वास के साथ उत्तर दे सकते हैं ....
int[] x, y
, y
एक सरणी है (क्योंकि []
प्रकार के अंतर्गत आता है), और के मामले में int x[], y
, y
एक सरणी ( []
चर के अंतर्गत आता है) नहीं है।
एक ही अंतर है, यदि आप एक ही घोषणा में एक से अधिक चर घोषित करते हैं:
int[] a, b; // Both a and b are arrays of type int
int c[], d; // WARNING: c is an array, but d is just a regular int
ध्यान दें कि यह खराब कोडिंग शैली है, हालांकि संकलक निश्चित रूप से आपकी त्रुटि को उसी क्षण पकड़ लेगा जिस क्षण आप उपयोग करने का प्रयास करते हैं d
।
इसमें कोई फर्क नही है।
मैं पसंद करता हूं कि type[] name
प्रारूप स्पष्ट है कि चर एक सरणी है (यह क्या है यह जानने के लिए चारों ओर कम दिख रहा है)।
संपादित करें:
ओह रुको एक अंतर है (मैं भूल गया क्योंकि मैं एक समय में एक से अधिक चर घोषित नहीं करता):
int[] foo, bar; // both are arrays
int foo[], bar; // foo is an array, bar is an int.
नहीं, ये वही हैं। तथापि
byte[] rowvector, colvector, matrix[];
के बराबर है:
byte rowvector[], colvector[], matrix[][];
जावा विशिष्टता से लिया गया । इसका मतलब है कि
int a[],b;
int[] a,b;
अलग है। मैं इनमें से कई घोषणाओं की सिफारिश नहीं करूंगा। पढ़ने के लिए सबसे आसान (शायद) होगा:
int[] a;
int[] b;
से जावा भाषा विशिष्टता की धारा 10.2 :
घोषणा के आरंभ में [] प्रकार के भाग के रूप में प्रकट हो सकता है, या किसी विशेष चर के लिए घोषणाकर्ता के हिस्से के रूप में, या दोनों, इस उदाहरण में:
byte[] rowvector, colvector, matrix[];
यह घोषणा इसके बराबर है:
byte rowvector[], colvector[], matrix[][];
व्यक्तिगत रूप से लगभग सभी जावा कोड जो मैंने कभी देखे हैं, पहले रूप का उपयोग करते हैं, जो एक ही स्थान पर चर के बारे में सभी प्रकार की जानकारी रखते हुए अधिक समझ में आता है। काश दूसरा रूप भी ठुकराया जाता, ईमानदार होने के लिए ... लेकिन ऐसी जिंदगी है ...
सौभाग्य से मुझे नहीं लगता कि मैंने कभी यह (वैध) कोड देखा है:
String[] rectangular[] = new String[10][10];
int[] a[];
- कि है कभी नहीं स्पष्ट नहीं होने जा रहा ;-)
दो आज्ञाएँ एक ही बात हैं।
आप कई वस्तुओं को घोषित करने के लिए सिंटैक्स का उपयोग कर सकते हैं:
int[] arrayOne, arrayTwo; //both arrays
int arrayOne[], intOne; //one array one int
देखें: http://java.sun.com/docs/books/jls/second_edition/html/arrays.doc.html
दोनों के बीच कोई अंतर नहीं है; दोनों की एक सरणी घोषित करते हैं int
। हालाँकि, पूर्व को पसंद किया जाता है क्योंकि यह सभी प्रकार की जानकारी को एक स्थान पर रखता है। बाद वाला केवल जावा में जाने वाले C / C ++ प्रोग्रामर के लाभ के लिए समर्थित है।
कोई वास्तविक अंतर नहीं है; तथापि,
double[] items = new double[10];
पसंद किया जाता है क्योंकि यह स्पष्ट रूप से इंगित करता है कि प्रकार एक सरणी है।
दोनों समान रूप से मान्य हैं। int puzzle[]
प्रपत्र लेकिन हतोत्साहित किया जाता है, int[] puzzle
के अनुसार प्राथमिकता दी जाती है कोडन सम्मेलनों । आधिकारिक जावा एरेज़ ट्यूटोरियल भी देखें :
इसी प्रकार, आप अन्य प्रकार के ऐरे को घोषित कर सकते हैं:
byte[] anArrayOfBytes; short[] anArrayOfShorts; long[] anArrayOfLongs; float[] anArrayOfFloats; double[] anArrayOfDoubles; boolean[] anArrayOfBooleans; char[] anArrayOfChars; String[] anArrayOfStrings;
आप सरणी के नाम के बाद वर्ग कोष्ठक भी रख सकते हैं:
float anArrayOfFloats[]; // this form is discouraged
हालाँकि, सम्मेलन इस रूप को हतोत्साहित करता है; कोष्ठक सरणी प्रकार की पहचान करते हैं और प्रकार पदनाम के साथ दिखाई देना चाहिए।
अंतिम पैराग्राफ पर ध्यान दें।
मैं कुछ 3 पार्टी वालों के बजाय आधिकारिक सन / ओरेकल ट्यूटोरियल पढ़ने की सलाह देता हूं। अन्यथा आप बुरी प्रथाओं को सीखने में जोखिम उठाएँगे।
यह एक वैकल्पिक रूप है, जिसे उधार लिया गया था C
, जिस पर जावा आधारित है।
जिज्ञासा के रूप में, जावा में एक वैध विधि को परिभाषित करने के तीन तरीके हैं main
:
public static void main(String[] args)
public static void main(String args[])
public static void main(String... args)
public static void main ( String \u005B \u005D args )
, यह दूसरा संस्करण भी है।
String... param
, है एक सरणी
, then why it is not possible to call a method like say
someMethod (1, 2) `यदि कोई परिभाषित कर रहा someMethod
है someMethod ( int[] numbers )
। ऐरे की मांग है कि तर्क, सन्निहित स्मृति स्थान से होना चाहिए, हालांकि varargs
, पहले दिए गए तर्कों से एक सरणी बना देगा। इसके अलावा, एक varargs
विधि का केवल अंतिम तर्क हो सकता है, हालांकि यह एक सरणी के लिए सही नहीं है।
meth(int... a)
तो के रूप में बुलाया जा सकता है । वरार्स वाक्यगत शर्करा है जो पहले संस्करण को दूसरे संस्करण में बदल देता है। पैरामीटर का वास्तविक (बाइटकोड) प्रकार एक सरणी प्रकार है। अंतिम होने के लिए, यदि आप इसके बारे में सोचते हैं, तो कोई अन्य विकल्प नहीं है। meth(1, 2)
meth(new int[] {1, 2})
जावा भाषा विशिष्टता का कहना है:
The [] may appear as part of the type at the beginning of the declaration,
or as part of the declarator for a particular variable, or both, as in this
example:
byte[] rowvector, colvector, matrix[];
This declaration is equivalent to:
byte rowvector[], colvector[], matrix[][];
इस प्रकार वे बिल्कुल उसी बाइट कोड में परिणाम करेंगे।
वे पूरी तरह से समकक्ष हैं। int [] array
पसंदीदा शैली है। int array[]
बस एक समकक्ष, सी-संगत शैली के रूप में प्रदान किया जाता है।
दोनों का एक ही अर्थ है। हालाँकि, इन वेरिएंट का अस्तित्व भी इसकी अनुमति देता है:
int[] a, b[];
जो समान है:
int[] a;
int[][] b;
हालांकि, यह भयानक कोडिंग शैली है और इसे कभी नहीं किया जाना चाहिए।
वे समान हैं, लेकिन इन कथनों में एक महत्वपूर्ण अंतर है:
// 1.
int regular, array[];
// 2.
int[] regular, array;
1 में। नियमित रूप से एक int है, जैसा कि 2 के विपरीत है। जहां दोनों नियमित और सरणी int के सरणियाँ हैं।
आपके द्वारा दिया गया दूसरा कथन इसलिए पसंद किया जाता है, क्योंकि यह अधिक स्पष्ट है। ओरेकल पर इस ट्यूटोरियल के अनुसार पहला रूप भी हतोत्साहित किया गया है ।
जैसा कि पहले ही कहा जा चुका है, बहुत अधिक अंतर नहीं है (यदि आप प्रति पंक्ति केवल एक चर घोषित करते हैं)।
ध्यान दें कि सोनारक्यूब आपके दूसरे मामले को मामूली कोड गंध के रूप में मानता है :
सरणी डिज़ाइनर "[]" प्रकार पर होना चाहिए, न कि चर (विद्रूप: S1197)
बेहतर कोड पठनीयता के लिए सरणी डिज़ाइनर हमेशा टाइप पर स्थित होना चाहिए। अन्यथा, डेवलपर्स को यह जानना होगा कि चर एक प्रकार है या नहीं, यह जानने के लिए दोनों प्रकार और चर नाम को देखना चाहिए।
गैर-जटिल कोड उदाहरण
int matrix[][]; // Noncompliant int[] matrix[]; // Noncompliant
जटिल समाधान
int[][] matrix; // Compliant
हां, बिल्कुल वैसा ही। व्यक्तिगत रूप से, मुझे पसंद है
int[] integers;
क्योंकि यह आपके कोड को पढ़ने वाले किसी भी व्यक्ति के लिए तुरंत स्पष्ट कर देता है कि पूर्णांक इंटों का एक सरणी है, जिसका विरोध किया गया है
int integers[];
जो यह सब स्पष्ट नहीं करता है, खासकर यदि आपके पास एक पंक्ति में कई घोषणाएं हैं। लेकिन फिर से, वे समकक्ष हैं, इसलिए यह व्यक्तिगत प्राथमिकता पर आता है।
की जाँच करें जावा में सरणियों पर यह पेज गहराई उदाहरण में और अधिक के लिए।
एकल सरणी संदर्भ की घोषणा करते समय, उनके बीच बहुत अंतर नहीं होता है। इसलिए निम्नलिखित दो घोषणाएँ समान हैं।
int a[]; // comfortable to programmers who migrated from C/C++
int[] a; // standard java notation
कई ऐरे संदर्भों की घोषणा करते समय, हम उनके बीच अंतर पा सकते हैं। निम्नलिखित दो कथनों का अर्थ समान है। वास्तव में, यह प्रोग्रामर पर निर्भर है कि वह किसका अनुसरण कर रहा है। लेकिन मानक जावा संकेतन की सिफारिश की जाती है।
int a[],b[],c[]; // three array references
int[] a,b,c; // three array references