জাভাতে আমরা নিম্নলিখিত ব্যবহার করে একটি অ্যারে ঘোষণা করতে পারি:
String[] array = new String[10];
int size = array.length;
এর অর্থ কী অ্যারে নিজেই একটি বস্তু? আমি জিজ্ঞাসা করি, কারণ সি ++ এ অ্যারে কেবল পয়েন্টার এবং কোনও পদ্ধতি নেই have
জাভাতে আমরা নিম্নলিখিত ব্যবহার করে একটি অ্যারে ঘোষণা করতে পারি:
String[] array = new String[10];
int size = array.length;
এর অর্থ কী অ্যারে নিজেই একটি বস্তু? আমি জিজ্ঞাসা করি, কারণ সি ++ এ অ্যারে কেবল পয়েন্টার এবং কোনও পদ্ধতি নেই have
if (array instanceof Object) System.out.println("Yes!")
&x, p+iএবং new int(42)।
উত্তর:
হ্যাঁ.
জাভা ভাষা নির্দিষ্টকরণ বিভাগ 4.3.1 এর সাথে শুরু হয়:
একটি বস্তু একটি শ্রেণীর উদাহরণ বা একটি অ্যারে।
হ্যাঁ; জাভা ভাষার স্পেসিফিকেশন লিখেছেন :
জাভা প্রোগ্রামিং ল্যাঙ্গুয়েজে অ্যারেগুলি অবজেক্টস (.34.3.1), গতিশীলভাবে তৈরি করা হয় এবং অবজেক্ট (§4.3.2) টাইপের ভেরিয়েবলগুলিতে নির্ধারিত হতে পারে। শ্রেণীর অবজেক্টের সমস্ত পদ্ধতি কোনও অ্যারেতে চালিত হতে পারে।
ঠিক আছে, আসুন জাভা জিজ্ঞাসা করি!
public class HelloWorld
{
public static void main(String[] args)
{
System.out.println(args instanceof Object);
int[] someIntegers = new int[] {42};
System.out.println(someIntegers instanceof Object);
}
}
আউটপুট:
true
true
int[] someIntegers = {42};একই ফলাফল হিসাবে ঘোষণা করতে পারেন ।
হ্যাঁ, এটি জাভাতে একটি বিষয়।
এছাড়াও মনে রাখবেন যে আপনি যখন array.lengthকোনও পদ্ধতি চালাচ্ছেন না কেবল অ্যারের lengthক্ষেত্রটি অ্যাক্সেস করছেন । অ্যারে ক্লাসে প্রচুর স্ট্যাটিক পদ্ধতি রয়েছে ।
আমি উত্তরটি হ্যাঁ বলব, যদিও আমি এটি যুক্ত করতে পারি, কঠোরভাবে বলতে গেলে, একটি অ্যারে সি ++ তেও একটি অবজেক্ট। বর্তমান স্ট্যান্ডার্ড (এফডিআইএস) এর §1.8 [অন্তর্ভুক্তকরণ বিষয়ক] থেকে:
একটি অবজেক্ট স্টোরেজ একটি অঞ্চল।
আমি কেবল যুক্ত করতে চাই যে অ্যারেগুলির প্রতিবিম্ব API- java.lang.reflect.Array তে একটি প্রতিনিধিত্ব রয়েছে ।
জাভাতে প্রতিটি অ্যারে হ'ল একটি অবজেক্ট প্রাক্তন [] a = নতুন ইনট [2]; নতুন কোনও অবজেক্ট তৈরি করতে ব্যবহৃত হয় এবং এটি একটি বস্তু হিসাবে আমরা কেবল a.getClass () ব্যবহার করে বর্গের নামটি পরীক্ষা করতে পারি get getName ();
java.util.Object(new int[1]) instanceof Object // -> evaluates to true
java.util.Arraysএকটি সহায়ক শ্রেণি, এবং অ্যারেগুলি এই শ্রেণীর উদাহরণ নয়।(new int[1]) instanceof java.util.Arrays // -> compile error
java.lang.reflect.Arrayএকটি সহায়ক শ্রেণি, এবং অ্যারেগুলি এই শ্রেণীর উদাহরণ নয়।(new int[1]) instanceof java.lang.reflect.Array // -> compile error
অ্যারে এর সমস্ত সদস্যের উত্তরাধিকার সূত্রে প্রাপ্ত java.lang.Object
অ্যারেগুলি clone()উত্তরাধিকার সূত্রে প্রাপ্ত পদ্ধতিটিকে ওভাররাইড করে Object।
অ্যারে ক্ষেত্রটি বাস্তবায়ন করে length, যাতে অ্যারের উপাদানগুলির সংখ্যা থাকে। দৈর্ঘ্য ধনাত্মক বা শূন্য হতে পারে। এটা publicএবং final।
অ্যারে ইন্টারফেস প্রয়োগ করে Cloneableএবং java.io.Serializable।
8 এ। অ্যারে দ্বারা সমর্থিত Class<T>। আপনি Class<T>অ্যারের উদাহরণ থেকে উদাহরণটি পুনরুদ্ধার করতে পারেন
(new int[2]).getClass()
বা একটি অ্যারে টাইপ থেকে
int[].class
8 বি। java.lang.Class<T>আপনার কোডে প্রতিটি আলাদা অ্যারে টাইপের জন্য একটি অনন্য প্রতিবিম্ব শ্রেণীর উদাহরণ (যেমন একটি উদাহরণ ) তৈরি করা হয়েছে। উদাহরণ
int[].class.getCanonicalName() // -> "int[]"
String[].class.getCanonicalName() // -> "java.lang.String[]" /
রেফারেন্স
জাভা স্পেসিফিকেশন বিভাগ থেকে 4.3.1 অবজেক্ট
একটি বস্তু একটি শ্রেণীর উদাহরণ বা একটি অ্যারে।
একটি শ্রেণীর উদাহরণ স্পষ্টরূপে একটি শ্রেণীর উদাহরণ সৃষ্টি এক্সপ্রেশন দ্বারা তৈরি করা হয়।
একটি অ্যারে স্পষ্টভাবে একটি অ্যারের সৃষ্টি এক্সপ্রেশন দ্বারা তৈরি করা হয়।
Java.util.Ararays থেকে
একটি অ্যারের টাইপের সরাসরি সুপারক্লাস হয় Object।
প্রতিটি অ্যারে টাইপ ইন্টারফেস প্রয়োগ করে Cloneableএবং java.io.Serializable।
বিভাগ থেকে 10.7 অ্যারে সদস্যদের
একটি অ্যারের ধরণের সদস্যরা নিম্নলিখিত সমস্ত কিছু রয়েছে:
সর্বজনীন চূড়ান্ত ক্ষেত্র length, যাতে অ্যারের উপাদানগুলির সংখ্যা থাকে। দৈর্ঘ্য ধনাত্মক বা শূন্য হতে পারে।
সর্বজনীন পদ্ধতি clone, যা শ্রেণিতে একই নামের পদ্ধতিটিকে ওভাররাইড করে Objectএবং কোনও পরীক্ষিত ব্যতিক্রম ছুঁড়ে না দেয়। এর রিটার্ন টাইপ cloneএকটি অ্যারের ধরনের পদ্ধতি T[]রয়েছে T[]।
একটি বহুমাত্রিক অ্যারের ক্লোনটি অগভীর, যা বলে যে এটি কেবলমাত্র একটি নতুন অ্যারে তৈরি করে। সুবারে ভাগ করা আছে।
ক্লাস অবজেক্ট থেকে প্রাপ্ত সমস্ত সদস্য; অবজেক্টের একমাত্র পদ্ধতি যা উত্তরাধিকার সূত্রে প্রাপ্ত হয় না তা হ'ল তার ক্লোন পদ্ধতি।
যে কোনও কিছুর অ্যারে বস্তু। কেউ যেমন পদ্ধতিগুলি কল করতে পারে equals, hashcodeইত্যাদি:
final int[] i = {};
i.equals(new int[] {1}); // false
i.hashcode();
স্থানীয় পদ্ধতিতে কেউ কল করতে পারে না।
কোড স্নিপেট এবং আউটপুট নীচে পর্যবেক্ষণ করুন।
public class Tester {
int a[];
public static void main(String[] args) {
System.out.println(new Tester().a);// null
System.out.println(new Tester().a[0]);// Exception in thread "main" java.lang.NullPointerException \n at mainclass.Tester.main(Tester.java:10)
}
}
স্পষ্টভাবে অ্যারে একটি অবজেক্ট হিসাবে বিবেচিত হয়।
হ্যাঁ, ডকস তাই বলে:
একটি অ্যারে হ'ল একটি ধারক বস্তু যা একক ধরণের মানের একটি নির্দিষ্ট সংখ্যক ধারণ করে।
নোট করুন যে অ্যারে প্রিমিটিভ প্রকারের ধরণের (যেমন int[]বা char[]) সেগুলিও বস্তু।
প্রতিটি অ্যারে সরাসরি প্রসারিত java.lang.Objectএবং ইন্টারফেস প্রয়োগ করে javs.lang.Cloneableএবং java.io.Serializable। একটি অ্যারের রানটাইম টাইপ স্বাক্ষর [Lসঙ্গে সঙ্গে উপাদান উপাদান (যেমন [Ljava.lang.String) এর শ্রেণীর নাম অনুসরণ করা হয় । আদিম ধরণের অ্যারেগুলিতে নিম্নলিখিত রানটাইম স্বাক্ষর রয়েছে:
[Bজন্য byte[];[Sজন্য short[];[Iজন্য int[];[Jজন্য long[];[Fজন্য float[];[Dজন্য double[];[Cজন্য char[]।