الكلمة الرئيسية static في جافا تستخدم كثيرًا في برمجة جافا. تُستخدم الكلمة الرئيسية static في جافا لإنشاء متغير مستوى الفئة في جافا. المتغيرات والطرق الثابتة جزء من الفئة، ليس من الحالات للفئة.
الكلمة الرئيسية static في جافا
الجافا الثابتة يمكن استخدام الكلمة الرئيسية static في خمس حالات كما هو موضح في الصورة أدناه.
سنناقش أربعة منها هنا، الخامس تم تقديمه في جافا 8 وتم مناقشته في تغييرات واجهة جافا 8.
-
متغير Java الثابت
يمكننا استخدام كلمة
static
مع متغير مستوى الصف. المتغير الثابت هو متغير الصف ولا ينتمي إلى الكائن / النسخة من الصف. نظرًا لأن المتغيرات الثابتة مشتركة عبر جميع النسخ من الكائن ، فإنها ليست آمنة للموضوع. عادةً ما يتم استخدام المتغيرات الثابتة مع الكلمة النهائية للموارد المشتركة أو الثوابت التي يمكن استخدامها من قبل جميع الكائنات. إذا لم يكن المتغير الثابت خاصًا ، فيمكننا الوصول إليه باستخدامClassName.variableName
// مثال على المتغير الثابت private static int count; public static String str; public static final String DB_USER = "myuser";
-
طريقة Java الثابتة
مثل المتغير الثابت، تنتمي الطريقة الثابتة إلى الفئة وليس إلى حالات الفئة. يمكن للطريقة الثابتة الوصول إلى المتغيرات الثابتة فقط من الفئة واستدعاء طرق الفئة الثابتة فقط. عادةً ما تكون الطرق الثابتة طرق فائدة نرغب في تعريضها لاستخدامها بواسطة فئات أخرى دون الحاجة إلى إنشاء نسخة. على سبيل المثال فئة الـ Collections. وتحتوي فئات الغلاف الخاصة بجافا والفئات المساعدة على العديد من الطرق الثابتة. الطريقة main() التي هي نقطة الدخول لبرنامج جافا نفسها طريقة ثابتة.
//مثال على طريقة ثابتة public static void setCount(int count) { if(count > 0) StaticExample.count = count; } //طريقة مساعدة ثابتة public static int addInts(int i, int...js){ int sum=i; for(int x : js) sum+=x; return sum; }
ابتداءً من جافا 8، يمكننا أيضًا وجود طرق ثابتة في الواجهات. لمزيد من التفاصيل يرجى قراءة تغييرات واجهة جافا 8.
-
كتلة جافا الثابتة
كتلة جافا الثابتة هي مجموعة البيانات التي يتم تنفيذها عندما يتم تحميل الفئة في الذاكرة بواسطة Java ClassLoader. تُستخدم الكتلة الثابتة لتهيئة المتغيرات الثابتة للفئة. غالبًا ما يتم استخدامها لإنشاء موارد ثابتة عند تحميل الفئة. لا يمكننا الوصول إلى المتغيرات غير الثابتة في الكتلة الثابتة. يمكننا وجود عدة كتل ثابتة في فئة واحدة، على الرغم من أن هذا لا يلزم كثيرًا. يتم تنفيذ كود الكتلة الثابتة مرة واحدة فقط عندما يتم تحميل الفئة في الذاكرة.
static{ // يمكن استخدامها لتهيئة الموارد عندما يتم تحميل الفئة System.out.println("كتلة جافا الثابتة مثال"); // يمكن الوصول إلى المتغيرات والطرق الثابتة فقط str="اختبار"; setCount(2); }
-
فئة جافا الثابتة
يمكننا استخدام الكلمة الثابتة مع الفئات المتداخلة. لا يمكن استخدام الكلمة الثابتة مع الفئات العليا. فئة متداخلة ثابتة هي نفسها كأي فئة علوية أخرى وتُضمن فقط لراحة التغليف. اقرأ: فئات جافا المتداخلة
دعنا نرى جميع استخدامات الكلمة الرئيسية static في جافا في برنامج عيني. StaticExample.java
package com.journaldev.misc;
public class StaticExample {
// كتلة ثابتة
static{
// يمكن استخدامها لتهيئة الموارد عند تحميل الفئة
System.out.println("StaticExample static block");
// يمكن الوصول إلى المتغيرات والطرق الثابتة فقط
str="Test";
setCount(2);
}
// عدة كتل ثابتة في نفس الفئة
static{
System.out.println("StaticExample static block2");
}
// مثال على متغير ثابت
private static int count; //kept private to control its value through setter
public static String str;
public int getCount() {
return count;
}
// مثال على الطريقة الثابتة
public static void setCount(int count) {
if(count > 0)
StaticExample.count = count;
}
// طريقة أداة ثابتة
public static int addInts(int i, int...js){
int sum=i;
for(int x : js) sum+=x;
return sum;
}
// مثال على فئة ثابتة - تستخدم لراحة التعبئة والتغليف فقط
public static class MyStaticClass{
public int count;
}
}
لنرى كيفية استخدام متغير ثابت وطريقة وفئة ثابتة في برنامج اختباري. TestStatic.java
package com.journaldev.misc;
public class TestStatic {
public static void main(String[] args) {
StaticExample.setCount(5);
// يمكن الوصول إلى المتغيرات الثابتة غير الخاصة بالفئة مع اسم الفئة
StaticExample.str = "abc";
StaticExample se = new StaticExample();
System.out.println(se.getCount());
// متغيرات الفئة والمثيل الثابتة هي نفسها
System.out.println(StaticExample.str +" is same as "+se.str);
System.out.println(StaticExample.str == se.str);
// الفئات المدمجة الثابتة مثل الفئات العلوية العادية
StaticExample.MyStaticClass myStaticClass = new StaticExample.MyStaticClass();
myStaticClass.count=10;
StaticExample.MyStaticClass myStaticClass1 = new StaticExample.MyStaticClass();
myStaticClass1.count=20;
System.out.println(myStaticClass.count);
System.out.println(myStaticClass1.count);
}
}
الإخراج من مثال الكلمة الرئيسية الثابتة في برنامج جافا أعلاه هو:
StaticExample static block
StaticExample static block2
5
abc is same as abc
true
10
20
لاحظ أن كود الكتلة الثابتة يتم تنفيذه أولاً ومرة واحدة فقط بمجرد تحميل الفئة في الذاكرة. الإخراج الآخر يتضح بنفسه.
استيراد جافا الثابت
عادةً ما نستخدم الأعضاء الثابتة باستخدام مرجع الفصل، ومنذ جافا 1.5 يمكننا استخدام الاستيراد الثابت لجافا لتجنب مرجع الفصل. فيما يلي مثال بسيط على استيراد جافا الثابت.
package com.journaldev.test;
public class A {
public static int MAX = 1000;
public static void foo(){
System.out.println("foo static method");
}
}
package com.journaldev.test;
import static com.journaldev.test.A.MAX;
import static com.journaldev.test.A.foo;
public class B {
public static void main(String args[]){
System.out.println(MAX); //normally A.MAX
foo(); // normally A.foo()
}
}
لاحظ عبارات الاستيراد، للاستيراد الثابت يجب علينا استخدام import static
تليها العضو الثابت المصنف تصنيفًا كاملاً لفصل. لاستيراد جميع الأعضاء الثابتة لفصل، يمكننا استخدام * كما في import static com.journaldev.test.A.*;
. يجب علينا استخدامه فقط عندما نستخدم المتغير الثابت لفصل عدة مرات، ليس جيدًا لقابلية القراءة. تحديث: لقد قمت مؤخرًا بإنشاء فيديو لشرح الكلمة الثابتة في جافا، يجب عليك مشاهدته أدناه. https://www.youtube.com/watch؟v=2e-l1vb\_fwM
Source:
https://www.digitalocean.com/community/tutorials/static-keyword-in-java