واحد. حول خصائص المصفوفات
1. في جافا ، هناك حدود تحقق مما إذا كنت تستخدم المصفوفات أو المجموعات. إذا كانت العملية خارج الحدود ، فسيتم الحصول على RunTimeException.
2. المصفوفات يمكن أن تنقذ أنواعًا محددة فقط. يمكن للصفائف حفظ أنواع البيانات الأصلية ، ولكن لا يمكن للمجموعات. لا تقوم المجموعات بمعالجة الكائنات في أنواع محددة. يعالجون جميع الكائنات وفقًا لنوع الكائن. ما يتم تخزينه في المجموعة هو مرجع الكائن بدلاً من الكائن نفسه.
3. يمكن لفئة التجميع حفظ المراجع فقط إلى الكائنات. يمكن إنشاء المصفوفات لحفظ أنواع البيانات الأصلية مباشرة ، أو لحفظ المراجع إلى الكائنات. في المجموعة ، يمكنك استخدام فئة Wrapper ، مثل عدد صحيح ، مزدوج ، وما إلى ذلك لحفظ قيم نوع البيانات الأصلية.
رمز المثال:
int a = 10 ؛ عدد صحيح integer = عدد صحيح جديد (أ) ؛ int b = integer.intvalue () ؛ system.out.println (a = b) ؛
4. صفيف الكائن ومصفوفة نوع البيانات الأصلية متماثلة تقريبًا ؛ الفرق الوحيد هو أن صفيف الكائن يحفظ المراجع ، ويحمل صفيف نوع البيانات الأصلي قيمة نوع البيانات الأصلية.
2. الاستخدام الصحيح للمصفوفات
إذا كنت بحاجة إلى تخزين كمية كبيرة من البيانات ، على سبيل المثال ، إذا كنت بحاجة إلى قراءة 100 رقم ، فأنت بحاجة إلى تحديد 100 متغير. من الواضح أنه ليس من المنطقي تكرار الكود 100 مرة. كيف تحل هذه المشكلة؟ توفر لغة Java بنية بيانات صفيف (صفيف) ، وهي حاوية يمكنها تخزين عناصر من نفس نوع البيانات ويمكنها تخزين 100 أرقام في صفيف. ستكون المصفوفات ذات مساعدة كبيرة في هذا الوقت ~
1. فوائد المصفوفات
هل هناك أي فرق بين تخزين البيانات وعدم تخزين البيانات؟ أكبر ميزة للمصفوفات هي أنه يمكنها تلقائيًا ترقيم جميع العناصر المخزنة. لاحظ أن الرقم يبدأ من 0. من السهل تشغيل هذه البيانات.
على سبيل المثال ، يمكن استخدام رقم الطالب للعثور على الطالب المقابل.
2. تنسيق صفيف
الشكل 1:
نوع العنصر [] اسم الصفيف = نوع العنصر الجديد [عدد العناصر أو طول الصفيف] ؛
مثال:
int [] arr = new int [5] ؛ arr [0] = 1 ؛ arr [1] = 2 ؛
التنسيق 2:
نوع العنصر [] اسم صفيف = نوع العنصر الجديد [] {element ، element ، ...} ؛
int [] arr = new int [] {3،5،1،7} ؛ int [] arr = {3،5،1،7} ؛ملاحظة: عند تخصيص مساحة لمجموعة ، يجب عليك تحديد عدد العناصر التي يمكن أن تخزنها الصفيف لتحديد حجم الصفيف. لا يمكن تعديل حجم الصفيف بعد إنشاء الصفيف. يمكنك استخدام سمة الطول للحصول على حجم الصفيف.
3. إعلان متغيرات الصفيف
من أجل استخدام صفيف ، يجب الإعلان عن الصفيف في البرنامج ويجب تحديد نوع عنصر الصفيف.
= النصف الأيسر:
اكتب أولاً الجانب الأيسر لتوضيح أن نوع العنصر هو int وأن الحاوية تستخدم صفيف. إذن كيف تحدد الصفيف؟ ثم استخدم رمزًا خاصًا [] قوسين لتمثيله. لاستخدام صفيف ، تحتاج إلى إعطاء المصفوفة اسمًا ، لذلك نسمي المصفوفة X هنا. ثم اتبع علامة متساوية.
يعكس الرمز:
int [] x
ملاحظة: int x [] هو أيضًا تنسيق لإنشاء المصفوفات. يوصى إعلان المصفوفات int [] x.
4. إنشاء صفيف
= النصف الأيمن:
لاستخدام كلمة رئيسية جديدة ، تسمى New. يستخدم جديد لإنشاء كيان حاوية في الذاكرة. يتطلب تخزين البيانات مساحة. يتم فتح مساحة تخزين الكثير من البيانات مع المشغل الجديد. int جديد [3] ؛ هذا 3 هو عدد العناصر. يحدد الجزء الموجود على اليمين صفيفًا حقيقيًا في الذاكرة يمكنه تخزين 3 عناصر.
جديد int [3] يفعل شيئين. أولاً ، استخدم int [3] جديد لإنشاء صفيف ، ثم تعيين المرجع إلى متغير الصفيف x.
int [] x=new int[3];
ما هو نوع x؟
يجب أن يكون لأي متغير نوع البيانات الخاص به. لاحظ أن هذا x ليس من النوع int. يمثل INT نوع العنصر في الحاوية. ثم x من نوع الصفيف.
الصفيف هو نوع بيانات منفصل. تنقسم أنواع البيانات إلى مدرستين رئيسيتين ، تنقسمان إلى أنواع البيانات الأساسية وأنواع البيانات المرجعية. ثاني أكبر مدرسة هي نوع البيانات المرجعية. لذلك تلامس الآن مع أحد أنواع البيانات المشار إليها الثلاثة. أي أن نوع الصفيف [] تمثل الأقواس الصفيف.
int[] arr = new int[5]; ماذا يحدث في الذاكرة؟
عند تشغيل أي برنامج ، من الضروري فتح مساحة في الذاكرة. يتضمن ذلك المساحة التي تم فتحها بواسطة الجهاز الظاهري Java عند تنفيذ البرنامج. إذن ما مقدار المساحة التي تفتحها جافا؟ استمر في تعلم بنية ذاكرة Java.
5. تهيئة الصفيف
الطريقة 1: لا تستخدم المشغل الجديد
int [] arr = {1 ، 2 ، 3 ، 4 ، 5} ؛الطريقة 2: استخدم المشغل الجديد
int [] arr2 = new int [] {1 ، 2 ، 3 ، 4 ، 5} ؛ int [] arr3 = new int [3] ؛ arr3 [0] = 1 ؛ arr3 [1] = 5 ؛ arr3 [2] = 6 ؛إذا لم يتم استخدام المشغل الجديد في تهيئة الصفيف. ملاحظة: طريقة الكتابة التالية غير صحيحة.
int [] arr ؛ arr = {1،2،3،4،5} ؛في هذا الوقت ، تهيئة الصفيف ، يجب عليك وضع الإعلان والإنشاء والتهيئة في بيان واحد. فصله سيؤدي إلى أخطاء بناء الجملة.
لذلك يمكنك الكتابة فقط على النحو التالي:
int [] arr = {1،2،3،4،5} ؛6. صفيف اجتياز
الفراغ الثابت العام (سلسلة [] args) {int [] x = {1 ، 2 ، 3} ؛ لـ (int y = 0 ؛ y <3 ؛ y ++) {system.out.println (x [y]) ؛ // system.out.println ("x ["+y+"] ="+x [y]) ؛ طباعة تأثير x [0] = 1 ؛} // ثم هذه هي أول عملية شائعة للمصفوفات. اجتياز}هناك سمة في الصفيف يمكن أن تحصل على عدد العناصر في الصفيف ، أي طول الصفيف. اسم الصفيف. الطول
MAIN public static void (String [] args) {int [] x = {1 ، 2 ، 3} ؛ for (int y = 0 ؛ y <x.length ؛ y ++) {system.out.println (x [y]) ؛ // system.out.println ("x ["+y+"] ="+x [y]) ؛ طباعة تأثير x [0] = 1 ؛} // ثم هذه هي أول عملية شائعة للمصفوفات. اجتياز}7. استثناءات شائعة من المصفوفات
تعبر علامة زاوية صفيف الحدود استثناء: ملاحظة: تبدأ علامة الزاوية للمصفوفة من 0.
الفراغ الثابت العام الرئيسي (سلسلة [] args) {int [] x = {1 ، 2 ، 3} ؛ system.out.println (x [3]) ؛ // java.lang.arrayindexoutofboundsexection}استثناء مؤشر ثنائي الفرق:
الفراغ الثابت العام الرئيسي (سلسلة [] args) {int [] x = {1 ، 2 ، 3} ؛ x = null ؛ system.out.println (x [1]) ؛ // java.lang.nullpointerxception}صفيف:
متى يجب استخدام المصفوفات: عندما يكون هناك العديد من العناصر ، من أجل تسهيل تشغيل هذه المصفوفات ، سيتم تنفيذ التخزين المؤقت أولاً ، والحاوية المستخدمة هي صفيف.
سمات:
طول الصفيف ثابت.
8. العمليات المشتركة للمصفوفات
1: الحالة:
صفيف يأخذ القيمة القصوى
/*تحديد وظيفة للحصول على أقصى قيمة:
1. تحديد النتيجة: نوع قيمة الإرجاع int
2.
الأفكار:
1. تحديد متغير وتسجيل العناصر الأكبر من الصفيف.
2. تكرار من خلال الصفيف بأكمله وقارن كل عنصر من عناصر الصفيف مع المتغير.
3. عندما يواجه المتغير عنصرًا أكبر منه ، دع المتغير يسجل قيمة العنصر. عندما تنتهي الحلقة ، يتم إنشاء القيمة القصوى.
*/public static int getMax (int [] arr) {// حدد المتغير لتسجيل قيمة أكبر وتهيئتها إلى أي عنصر في الصفيف. int max = arr [0] ؛ for (int x = 1 ؛ x <arr.length ؛ x ++) {if (arr [x]> max) max = arr [x] ؛} return max ؛}الثاني: الفرز المباشر
الحالة 2: فرز المصفوفات باستخدام الفرز المباشر:
/*
حدد الفرز.
قارن العناصر مع زاوية واحدة بعناصر أخرى.
في الطرف الأول من الحلقة الداخلية ، تظهر معظم القيمة في موضع زاوية الرأس.
*/public static void selectsort (int [] arr) {for (int x = 0 ؛ x <arr.length-1 ؛ x ++) {for (int y = x+1 ؛ y <arr.length ؛ y ++) // لماذا هي قيمة التهيئة لـ y x+1؟ لأنه في كل مرة تقارنها ، تتم مقارنة // بالعنصر التالي الذي تم وضع علامة عليه في الزاوية x. {if (arr [x]> arr [y]) {int temp = arr [x] ؛ arr [x] = arr [y] ؛ arr [y] = temp ؛}}}}ثلاثة: فرز الفقاعات
/*فرز الفقاعات. طريقة المقارنة: قارن عنصرين متجاورتين. إذا تم استيفاء الشروط ، فسيتم إجراء استبدال الموضع. المبدأ: تنتهي الحلقة الداخلية مرة واحدة ، وتظهر معظم القيمة في موضع زاوية الذيل. */public static void bubblesort (int [] arr) {for (int x = 0 ؛ x <arr.length-1 ؛ x ++) {for (int y = 0 ؛ y <arr.length-x-1 ؛ y ++) //-x: اسمحوا للوصول إلى كل مشاركة في المقارنة. //-1: تجنب علامات الزاوية عبور الحدود. {if (arr [y]> arr [y+1]) {int temp = arr [y] ؛ arr [y] = arr [y+1] ؛ arr [y+1] = temp ؛}}}}أربعة: بحث نصف أضعاف (طريقة الجسيمات المزدوجة)
/*من أجل تحسين كفاءة البحث ، يمكنك استخدام طريقة البحث نصف الدقة. ملاحظة: هذا البحث صالح فقط للصفائف المطلوبة. أصبحت هذه الطريقة أيضًا طريقة بحث ثنائية. *//public static int halfseach (int [] arr ، int key) {int min ، mid ، max ؛ min = 0 ؛ max = arr.length -1 ؛ mid = (max + min)/2 ؛ بينما (الحد الأقصى+دقيقة)/2 ؛} العودة منتصف ؛}خمسة: صفيف قلب
/*الانعكاس هو في الواقع الاستبدال الموضعي لعناصر علامات زاوية الرأس والذيل ، ثم يتم زيادة علامات زاوية الرأس تلقائيًا. علامة زاوية الذيل يتم تنفيذها ذاتيًا. عندما تكون علامة زاوية الرأس <علامة زاوية الذيل ، يمكن تنفيذ إجراء الاستبدال. */reversearray static static static (int [] arr) {for (int start = 0 ، end = arr.length-1 ؛ start <end ؛ start ++ ، end-) {swap (arr ، start ، end) ؛}} // إجراء إزاحة موضعية لعناصر الصفيف. تبديل الفراغ الثابت العام (int [] arr ، int a ، int b) {int temp = arr [a] ؛ arr [a] = arr [b] ؛ arr [b] = temp ؛}11. صفيف ثنائي الأبعاد
استخدام المصفوفات
شرح مفصل لصفائف جافا
اجتياز: tostring () إرجاع عناصر الصفيف كسلسلة
النوع: sort () اطلب الصفيف في ترتيب تصاعدي
البحث: BinarySearch () يبحث عن العنصر المحدد في الصفيف المحدد ، وإرجاع فهرس العنصر. إذا لم يتم العثور على إرجاع (-INSERT POINT-1) ملاحظة: عند استخدام وظيفة البحث ، يجب فرز الصفيف أولاً.
صفيف ثنائي الأبعاد:
تدخين:
ليس لديك المال لشراء متغير واحد
القليل من المال عبارة عن حزمة من صفيف أحادي البعد 20 متغير
10 حزم غنية جدًا (صفيف ثنائي الأبعاد) صفيف ثنائي الأبعاد
صفيف ثنائي الأبعاد: في جوهره ، التخزين هو صفيف أحادي البعد.
تعريف الصفيف:
نوع الصفيف [] [] اسم الصفيف = نوع صفيف جديد [عدد صفيف أحادي البعد] [عدد العناصر في كل صفيف أحادي البعد] ؛
شرح مفصل لصفائف جافا
سؤال: لماذا A.Length = 3 ، A [0] .Length = 4؟
شرح مفصل لصفائف جافا
تهيئة الصفيف:
التهيئة الثابتة:
int [][] a = new int[][]{ {12,34,45,89},{34,56,78,10},{1,3,6,4} };
التهيئة الديناميكية:
شرح مفصل لصفائف جافا
العمليات الشائعة للمصفوفات ثنائية الأبعاد:
1. اجتياز صفيف ثنائي الأبعاد
2. تلخيص المصفوفات ثنائية الأبعاد
class demo3 {// تحديد دالة وظيفية تعبر صفيف ثنائي الأبعاد printarr2 (int [] [] a) {// 1. تفكيك الصفيف ثنائي الأبعاد للبيانات (int i = 0 ؛ i <a.length ؛ i ++) {// 2. ) {system.out.print (a [i] [j]+"،") ؛ }}} // تحديد دالة لحساب مجموع التراكم للعناصر في صفيف ثنائي الأبعاد عام طويل الثابت (int [] [] a) {// 0. تحديد مجموعة متغيرة طويلة = 0L ؛ // 1. تفكيك الصفيف ثنائي الأبعاد لـ (int i = 0 ؛ i <a.length ؛ i ++) {// 2. قم بفك الصفيف أحادي البعد للحصول على بيانات (int j = 0 ؛ j <a [i] .length ؛ j ++) {sum+= a [i] ؛ }} return sum ؛} // statistics عدد العناصر في مجموعة ثنائية الأبعاد عامة ثابتة int getDataCount (int [] [] a) {// 0. سجل عدد العناصر int count = 0 ؛ // 1. تفكيك الصفيف ثنائي الأبعاد لـ (int i = 0 ؛ i <a.length ؛ i ++) {// 2. تفكيك الصفيف أحادي البعد للحصول على بيانات لـ (int j = 0 ؛ j <a [i] .length ؛ j ++) {count ++ ؛ }} عدد الإرجاع ؛} الفراغ الثابت العام (سلسلة [] args) {int [] [] a = new int [] {{23،4،5} ، {2} ، {4،5،78،56،90}}} ؛ printarr2 (a) ؛ System.out.println () ؛ system.out.println ("SUM المتراكم هو:"+getSum (a)) ؛ system.out.println ("العدد الإحصائي للعناصر:"+getDataCount (a)) ؛ system.out.println ("Hello World!") ؛}}}}}ما ورد أعلاه كل الموضوعات حول صفائف جافا. كما ترون ، صفائف Java هي بنية بيانات قوية للغاية.