উত্তর:
তারা শব্দার্থগতভাবে অভিন্ন। int array[]
সিনট্যাক্স শুধুমাত্র সাহায্যের সি প্রোগ্রামারদের যোগ করা হয়েছিল জাভা ব্যবহার করতে পারেন।
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
ফর্ম্যাটটি পরিষ্কার যে ভেরিয়েবলটি একটি অ্যারে (এটি কী তা সন্ধান করার জন্য চারপাশে তাকাতে হবে) clear
সম্পাদনা করুন:
ওহ অপেক্ষা করুন কিছু পার্থক্য রয়েছে (আমি ভুলে গিয়েছি কারণ আমি একবারে একাধিক ভেরিয়েবল ঘোষণা করি না):
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
এস এর অ্যারে ঘোষণা । তবে প্রাক্তনটিকে পছন্দ করা হয় কারণ এটি টাইপ তথ্যকে এক জায়গায় রাখে। পরেরটি কেবল জা / তে সি / সি ++ প্রোগ্রামারদের সুবিধার জন্য সমর্থিত।
কোন বাস্তব পার্থক্য আছে; যাহোক,
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
তবে কনভেনশন এই ফর্মটিকে নিরুৎসাহিত করে; বন্ধনীগুলি অ্যারের প্রকারটি সনাক্ত করে এবং প্রকারের উপাধি সহ প্রদর্শিত হবে।
শেষ অনুচ্ছেদে নোট করুন।
আমি কয়েকটি তৃতীয় পক্ষের চেয়ে অফিসিয়াল সান / ওরাকল টিউটোরিয়ালগুলি পড়ার পরামর্শ দিচ্ছি। আপনি অন্যথায় খারাপ অভ্যাস শিখতে ঝুঁকি হবে।
এটি একটি বিকল্প রূপ, যা থেকে ধার করা হয়েছিল 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[][];
সুতরাং তারা ঠিক একই বাইট কোড ফলাফল করবে।
জাভাতে, এগুলি একই জিনিস বলার জন্য বিভিন্ন সিন্ট্যাক্টিক পদ্ধতি methods
তারা সম্পূর্ণ সমতুল্য। int [] array
পছন্দসই শৈলী। int array[]
কেবল একটি সমতুল্য, সি-সামঞ্জস্যপূর্ণ শৈলী হিসাবে সরবরাহ করা হয়।
দুজনেরই একই অর্থ। যাইহোক, এই বৈকল্পিকগুলির অস্তিত্বও এটিকে মঞ্জুরি দেয়:
int[] a, b[];
যা একই:
int[] a;
int[][] b;
তবে এটি ভয়াবহ কোডিং শৈলী এবং কখনই করা উচিত নয়।
এগুলি একই, তবে এই বিবৃতিগুলির মধ্যে একটি গুরুত্বপূর্ণ পার্থক্য রয়েছে:
// 1.
int regular, array[];
// 2.
int[] regular, array;
নিয়মিত হ'ল কেবল একটি ইনট, 2 এর বিপরীতে যেখানে নিয়মিত এবং অ্যারে উভয়ই ইন্টের অ্যারে হয়।
আপনার কাছে দ্বিতীয় বিবৃতিটি তাই বেশি পছন্দসই, কারণ এটি আরও স্পষ্ট। ওরাকলের এই টিউটোরিয়াল অনুসারে প্রথম ফর্মটিও নিরুৎসাহিত করা হয়েছে ।
ইতিমধ্যে যেমন বলা হয়েছে, তেমন কোনও পার্থক্য নেই (যদি আপনি প্রতি লাইনে কেবল একটি পরিবর্তনশীল ঘোষণা করেন)।
নোট করুন যে সোনারকিউব আপনার দ্বিতীয় কেসটিকে একটি গৌণ কোড গন্ধ হিসাবে গণ্য করে :
অ্যারে ডিজাইনারদের "[]" ধরণের হওয়া উচিত, পরিবর্তনশীল নয় (স্কুইড: 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