আমি toString
কোনও ফাংশন কল থেকে প্রাপ্ত কোনও বস্তুর সাথে কল করলে আমি এটি পাই। আমি জানি যে স্ট্রিংটিতে অবজেক্টের ধরণটি এনকোড করা আছে তবে কীভাবে এটি পড়তে হয় তা আমি জানি না।
এ জাতীয় এনকোডিং কী বলা হয়?
আমি toString
কোনও ফাংশন কল থেকে প্রাপ্ত কোনও বস্তুর সাথে কল করলে আমি এটি পাই। আমি জানি যে স্ট্রিংটিতে অবজেক্টের ধরণটি এনকোড করা আছে তবে কীভাবে এটি পড়তে হয় তা আমি জানি না।
এ জাতীয় এনকোডিং কী বলা হয়?
উত্তর:
[Ljava.lang.Object;
জন্য নাম Object[].class
, java.lang.Class
অ্যারের শ্রেণি প্রতিনিধিত্ব করে Object
।
নামকরণ প্রকল্পটি এখানে নথিভুক্ত করা হয় Class.getName()
:
এই শ্রেণীর অবজেক্টটি যদি এমন রেফারেন্স টাইপ উপস্থাপন করে যা অ্যারে টাইপ নয় তবে জাভা ভাষা নির্দিষ্টকরণ ( §13.1 ) দ্বারা উল্লিখিত শ্রেণীর বাইনারি নামটি ফিরে আসে ।
যদি এই শ্রেণীর অবজেক্টটি কোনও আদিম ধরণের প্রতিনিধিত্ব করে বা
void
, তবে প্রত্যাবর্তিত নামটি আদিম ধরণের সাথে সম্পর্কিত জাভা ভাষার কীওয়ার্ড বাvoid
।যদি এই শ্রেণীর অবজেক্টটি অ্যারেগুলির একটি শ্রেণির প্রতিনিধিত্ব করে, তবে নামের অভ্যন্তরীণ ফর্মটিতে
'['
অ্যারে নেস্টিংয়ের গভীরতা উপস্থাপনকারী এক বা একাধিক অক্ষরের পূর্বে উপাদান টাইপের নাম থাকে । উপাদান টাইপের নামের এনকোডিংটি নিম্নরূপ:Element Type Encoding boolean Z byte B char C double D float F int I long J short S class or interface Lclassname;
আপনার তালিকায় সর্বশেষ। এখানে কিছু উদাহরন:
// xxxxx varies
System.out.println(new int[0][0][7]); // [[[I@xxxxx
System.out.println(new String[4][2]); // [[Ljava.lang.String;@xxxxx
System.out.println(new boolean[256]); // [Z@xxxxx
কারণ toString()
অ্যারে আয় পদ্ধতি String
এই বিন্যাসে কারণ অ্যারে না @Override
পদ্ধতি থেকে উত্তরাধিকারসূত্রে Object
, যা নিম্নরূপ নিদিষ্ট হয়:
toString
বর্গ জন্য পদ্ধতিObject
@ একটি স্ট্রিং বর্গ যা বস্তুর একটি দৃষ্টান্ত এ সাইন ইন চরিত্র `অবস্থিত তার নাম নিয়ে গঠিত ', এবং বস্তুর হ্যাশ কোডের স্বাক্ষরবিহীন হেক্সাডেসিমেল উপস্থাপনা ফেরৎ। অন্য কথায়, এই পদ্ধতিটি এর মান সমান একটি স্ট্রিং প্রদান করে:getClass().getName() + '@' + Integer.toHexString(hashCode())
দ্রষ্টব্য : আপনিtoString()
উপরের স্পেসিফিকেশন অনুসরণ করতে কোনও যেকোন স্বেচ্ছাসেবীরউপর নির্ভর করতে পারবেন না, যেহেতু তারা@Override
অন্য কিছু ফেরতদিতে (এবং সাধারণতএটি করতেপারে)। একটি স্বেচ্ছাসেবী বস্তুর প্রকারের নিরীক্ষণের আরও নির্ভরযোগ্য উপায় হ'লgetClass()
এটি (যেfinal
পদ্ধতিটি উত্তরাধিকার সূত্রে প্রাপ্ত হয়েছিলObject
) এবং তারপরেপ্রত্যাবর্তিতবস্তুর প্রতিফলনClass
। আদর্শভাবে, যদিও, API এর এমন নকশা করা উচিত ছিল যে প্রতিবিম্বটি প্রয়োজনীয় নয় ( কার্যকর জাভা 2 য় সংস্করণ, আইটেম 53: প্রতিচ্ছবিতে ইন্টারফেসগুলি পছন্দ করুন )।
toString
অ্যারেগুলির জন্য আরও "দরকারী"java.util.Arrays
toString
আদিমস্ত অ্যারেগুলির জন্য ওভারলোড সরবরাহ করে এবং Object[]
। এছাড়াও deepToString
আপনি নেস্টেড অ্যারে ব্যবহার করতে চাইতে পারেন is
এখানে কিছু উদাহরন:
int[] nums = { 1, 2, 3 };
System.out.println(nums);
// [I@xxxxx
System.out.println(Arrays.toString(nums));
// [1, 2, 3]
int[][] table = {
{ 1, },
{ 2, 3, },
{ 4, 5, 6, },
};
System.out.println(Arrays.toString(table));
// [[I@xxxxx, [I@yyyyy, [I@zzzzz]
System.out.println(Arrays.deepToString(table));
// [[1], [2, 3], [4, 5, 6]]
এছাড়াও রয়েছে Arrays.equals
এবং Arrays.deepEquals
অন্যান্য বিভিন্ন অ্যারে সম্পর্কিত ইউটিলিটি পদ্ধতির মধ্যে তাদের উপাদানগুলির দ্বারা অ্যারে সমতা তুলনা সম্পাদন করে।