أساسيات طريقة Java Static ، والطبقة ، والمتغير والكتلة
نشرت: 2019-12-13
ما هو ثابت في جافا؟
- يمكن استخدام الكلمة الأساسية الثابتة مع الفئة والمتغير والطريقة والكتلة.
- لا ينتمي الأعضاء الثابتون إلى أي مثيل محدد.
- الأعضاء الثابتون ينتمون إلى الفصل فقط.
- بمجرد أن تجعل العضو ثابتًا ، يمكنك الوصول إليه بدون أي كائن.
هل لديك أي من الأسئلة أدناه؟
- هل يمكنك تدوين أفضل الممارسات لطرق Java الثابتة؟
- ما هي طرق Java الثابتة في الواجهة؟
- هل لديك سؤال حول طرق Java الثابتة مقابل Singleton؟
- طرق Java الثابتة مقابل أداء طرق المثيل
- متغيرات وطرق جافا الثابتة
- طرق جافا الثابتة مقابل الطرق غير الثابتة
- طرق Java الثابتة في فئة مجردة
يمكن استخدام الكلمة الأساسية الثابتة في 3 سيناريوهات:
- المتغيرات الثابتة
- طرق ثابتة
- كتل ثابتة من التعليمات البرمجية.
متغير ثابت (الكلمة الرئيسية "الثابتة" = متغيرات الفئة)

في Java Variables يمكن التصريح عنها بالكلمة الأساسية " static
".
مثال: static int y = 0;
عندما يتم التصريح عن متغير بالكلمة الأساسية static
، فإنه يسمى class variable
. تشترك جميع المثيلات في نفس نسخة المتغير. يمكن الوصول إلى متغير الفئة مباشرة مع الفئة ، دون الحاجة إلى إنشاء مثيل.
لا توجد كلمة رئيسية "ثابتة" = متغيرات مثيل
بدون static keyword
، يطلق عليها instance variable
، ولكل مثيل من الفئة نسخته الخاصة من المتغير.
مثال: ثابت int crunchify_variable_name
؛
- تتم مشاركة المتغيرات الثابتة بين جميع مثيلات الفئة.
- أحد الأسباب الرئيسية التي تجعلك في حاجة إليها عندما تريد القيام بالكثير من إدارة الذاكرة.
- لجميع المتغيرات الثابتة - ستكون هناك نسخة واحدة فقط متاحة لك لاستخدامها.
- لا تحتاج مطلقًا إلى كائن فئة للوصول إلى متغير ثابت.
- فقط استخدمه مباشرة. لست بحاجة إلى
object.StaticVariable
- فقط استخدمه مباشرة. لست بحاجة إلى
ما هي الكتلة الثابتة؟
الكتلة الساكنة ، عبارة عن كتلة تعليمة داخل Java class
سيتم تنفيذها عند تحميل فئة لأول مرة في JVM.
هل يمكنك تجاوز الطريقة الخاصة في جافا؟
- حسننا، لا. لا يمكن تجاوز الطرق الخاصة لأنها غير متاحة للاستخدام خارج الفصل الدراسي.
لماذا لا يمكننا تجاوز الطرق الثابتة في جافا؟
- لا يمكن أيضًا تجاوز الأساليب الثابتة لأنها جزء من فئة وليست كائنًا
هل يمكننا الوصول إلى متغير غير ثابت في سياق ثابت؟
- لتكون قادرًا على الوصول إلى متغير غير ثابت من طرقك الثابتة ، يجب أن يكونوا متغيرات عضو ثابتة.
تفاصيل عن الطريقة الثابتة
- كيف تتعرف؟ فقط تحقق من هذا أولاً. هل تحتاج إلى كائن فئة للوصول إلى طريقة ثابتة؟ إذا لم تكن بحاجة إلى كائن ، فهذه طريقة ثابتة.
- تحتاج إلى استخدام كلمة أساسية ثابتة من أجل تحديد طريقة ثابتة
- من الأفضل استخدام الكلمات الرئيسية الثابتة إذا كانت هذه الطريقة لن تتغير طوال مشروعك في وقت التشغيل.
- لا يمكنك تجاوز الطريقة الثابتة.
دعنا نلقي نظرة على الأمثلة أدناه:
مثال 1:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
package crunchify . com . tutorials ; /** * @author Crunchify.com * */ public class CrunchifyStaticMethodMain { public static void main ( String args [ ] ) { String [ ] crunchifyObject = new String [ 3 ] ; crunchifyObject = new String [ ] { "Google" , "Facebook" , "Crunchify" } ; // creating instnace CrunchifyStaticMethodMain object = new CrunchifyStaticMethodMain ( ) ; object . crunchifyTestMethod ( crunchifyObject ) ; } /* * Check this out: Let's understand little more... * * Here method crunchifyTestMethod is defined as * public void crunchifyTestMethod(String[]) * so it is "non-static". It can't be called unless it is called on an instance of CrunchifyStaticMethodMain. * * If you declared your method as * public static void crunchifyTestMethod(int[]) * then you could call: CrunchifyStaticMethodMain.crunchifyTestMethod(arr); within main without having created an instance for it. */ public void crunchifyTestMethod ( String [ ] crunchifyObject ) { for ( int i = 0 ; i < crunchifyObject . length ; i ++ ) System . out . println ( crunchifyObject [ i ] ) ; } } |
تحقق من الشرح في above code block
. علينا إنشاء مثيل من Class للوصول إلى طريقة غير ثابتة.
المثال 2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
package com . crunchify . tutorials ; /** * @author Crunchify.com */ public class CrunchifyStaticDeclaration { // 1st static block static { System . out . println ( "\nI'm static block 1.." ) ; setTestString ( "This is static block's String" ) ; setTestValue ( 2 ) ; } // 2nd static blocks in same class static { System . out . println ( "\nI'm static block 2.." ) ; } // static variable example private static int testValue ; // kept private to control it's value through setter public int getTestValue ( ) { return testValue ; } // static method example public static void setTestValue ( int testValue ) { if ( testValue > 0 ) CrunchifyStaticDeclaration . testValue = testValue ; System . out . println ( "setTestValue method: " + testValue ) ; } public static String testString ; /** * @return the testString */ public static String getTestString ( ) { return testString ; } /** * @param testString the testString to set */ public static void setTestString ( String testString ) { CrunchifyStaticDeclaration . testString = testString ; System . out . println ( "setTestString method: " + testString ) ; } // static util method public static int subValue ( int i , int . . . js ) { int sum = i ; for ( int x : js ) sum -= x ; return sum ; } } |
الآن دعنا نجري الاختبار:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
package com . crunchify . tutorials ; /** * @author Crunchify.com */ public class CrunchifyStaticExample { public static void main ( String [ ] args ) { CrunchifyStaticDeclaration . setTestValue ( 5 ) ; // non-private static variables can be accessed with class name CrunchifyStaticDeclaration . testString = "\nAssigning testString a value" ; CrunchifyStaticDeclaration csd = new CrunchifyStaticDeclaration ( ) ; System . out . println ( csd . getTestString ( ) ) ; // class and instance static variables are same System . out . print ( "\nCheck if Class and Instance Static Variables are same: " ) ; System . out . println ( CrunchifyStaticDeclaration . testString == csd . testString ) ; System . out . println ( "Why? Because: CrunchifyStaticDeclaration.testString == csd.testString" ) ; } } |
انتاج:
1 2 3 4 5 6 7 8 9 10 11 |
I 'm static block 1.. setTestString method: This is static block' s String setTestValue method : 2 I ' m static block 2.. setTestValue method : 5 Assigning testString a value Check if Class and Instance Static Variables are same : true Why ? Because : CrunchifyStaticDeclaration . testString == csd . testString |
آمل أن تحصل حقًا على معلومات جيدة حول الطريقة الثابتة والمتغيرة والكتل.

أخبرنا إذا كنت تواجه أي مشكلة في تشغيل البرنامج أعلاه أو تواجه مشكلة في فهم الكلمات الأساسية الثابتة في Java.