khaled0mohammed نشر 9 يناير 2022 أرسل تقرير نشر 9 يناير 2022 حيث سأعرض لكم مثالين للتوضيح class Counter{ int count=0; Counter(){ count++; System.out.println(count); } public static void main(String args[]){ Counter c1=new Counter(); Counter c2=new Counter(); Counter c3=new Counter(); } } في هذا المثال يتم طباعة 1 1 1 اما في هذا المثال يعرض class Counter{ static int count=0; Counter(){ count++; System.out.println(count); } public static void main(String args[]){ Counter c1=new Counter(); Counter c2=new Counter(); Counter c3=new Counter(); } } اما في حال وضعنا statis للمتغير count يكون الناتج 1 2 3 ماذا تعني كلمة static 3 اقتباس
0 Hassan Hedr نشر 9 يناير 2022 أرسل تقرير نشر 9 يناير 2022 كلمة static كلمة محجوزة في اللغة ويمكن إضافتها إلى المتغيرات أو التوابع ضمن الصنف، وتعني ثابت، إضافتها لمتغير تجعل هذا المتغير متوفرًا ومتاحا على مستوى الصنف وليس على مستوى الكائنات، في الحالة العادية عند انشاء كائن يتم كل مرة في الذاكرة حجز مكان جديد لكافة المتغيرات المعرفة ضمن صنف هذا الكائن، لكن للمتغيرات الثابتة static يتم حجز مكان في الذاكرة مرة واحدة فقط، وكل تعامل مع هذا المتغير من أي كائن سيكون على نفس المتغير لاحظ في الحالة الأولى لديك المتغير تم تجديده في كل مرة أنشئت بها كائنًا جديدا class Counter{ int count = 0; // متغير جديد لكل كائن ... } أما في الحالة الثانية كل الكائنات تشاركت نفس المتغير وهو متاح لها جميعًا، وهو سبب زيادة قيمة المتغير ضمن الخرج عند كل انشاء لكائن جديد 1 ثم 2 ثم 3 class Counter{ static int count = 0; // متغير واحد لكل الكائنات ... } 1 اقتباس
0 qusayabomal3aqa نشر 9 يناير 2022 أرسل تقرير نشر 9 يناير 2022 كلمة static مهمة ورائعة جداً فيما يتعلق بالذاكرة، فهي تساعد المبرمج على إنشاء نظام فعال في إستخدام الذاكرة، أي يقلل من إستخدام الذاكرة. و ذلك لأن كل متغير أو دالة أو غيره تم تعريفه بأنه static فذلك يعني أن هذا المتغير سيتم حجز مكانه في الذاكرة لمرة واحدة فقط. يعني في مثالك الاول في كل مرة تنشأ فيها كائن من الصنف يحجز قيمة جديدة للمتغير count عند انشاء المتغير الاول count = 0 صحيح ويزيد واحد، وعند انشاء الكائن الثاني يحجز مكان جديد للمتغير count وتكون قيمته ايضاً صفر ويزيد واحد وهكذا اما في المثال الثاني فالمتغير count static ومعنى static هنا انه يتم حجز المتغير count مرة واحدة فقط، فعند انشاء اول كائن من الصنف تكون قيمة المتغير count تساوي صفر وتزيد واحد فيصبح count=1 وعند انشاء الكائن الثاني لا يحجز مكان جديد في الذاكرة للمتغير count بل يأخذ القيمة المحجوزة مسبقاً فتصبح قيمة المتغير count = 2 وهكذا اتمنى ان اكون قد وفقت في الاجابة على سؤالك اقتباس
0 شرف الدين حفني نشر 10 يناير 2022 أرسل تقرير نشر 10 يناير 2022 كما أشار حسن فإن الstatic يتم تخزينها على مستوى الصنف وليس الكائن ويوجد أيضًا فرق هام يجب ملاحظته وهو أن الذاكرة تنقسم إلى نوعين stack memory وتلك يتم تخزين المتغيرات وترتيب تنفيذ الدوال وهي سريعة التنفيذ والوصول إليها heap memory وفيها يتم تخزين الكائنات وهي بطيئة الوصول إليها في الحقيقة أن الstatic variables يتم تخزينهم في النوع الثاني (heap memory) وهذا يعني أن الوصول إلى المتغيرات التي يتم إعلانها كstatic يكون أبطأ من غيرها مما قد يؤدي إلى مشاكل في الأداء لذا يجب إستخدام خاصية الstatic بعناية وحرص عندما نكون حقًا نحتاجها, على سبيل المثال إن كان لدينا متغير مكلف للموارد عند إنشاؤه ونحن لا نريد إلا نسخة واحدة منه, في تلك الحالة من المفيد إنشاؤه ك static variable حتى يتم إستخدامه من قِبل جميع الكائنات بما أنه على مستوى الصنف . اقتباس
السؤال
khaled0mohammed
حيث سأعرض لكم مثالين للتوضيح
في هذا المثال يتم طباعة
1
1
1
اما في هذا المثال يعرض
اما في حال وضعنا statis للمتغير count يكون الناتج
1
2
3
ماذا تعني كلمة static
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.