x32x01
أدارة أكتب كود
- بواسطة x32x01 ||
ايه الفرق بين ال Local variable وال Global variable فى ال Memory ؟!
وهل بيفرق لو ال Variable ده Static variable ولا لأ ؟!
اتكلمنا فى موضوع سابق ان ال Primitive data types بتتخزن بشكل عام فى ال Stack
وان ال Non-Primitive data types ( ال Reference data types ) بتتخزن فى ال Heap
بس ال Primitive data types ممكن تبقا Local variable وممكن تبقا Global variable
فانت هتقولى هيا هتفرق طريقة تخزينها فى ال Memory بناء على نوعها Local او Global ؟
هقولك ايوة وكمل قراءة معايا للاخر علشان نفهم هتفرق ازاى فى طريقة التخزين
وعلشان نفهم الفرق بين ال Local variable وال Global variable فى طريقة التخزين فهنحتاج نفهم ازاى الداتا بتتخزن فى ال Stack بتعمق شوية
ال Stack ده زى ما قولنا جزء فى ال RAM بيتخزن فيه الداتا وتحديدا ال Primitive data types
وخلينى اضربلك مثال بسيط على طريقة التخزين فى ال Stack
ال Stack هيخزن ال Function دى كالتالى
هيعمل صندوق ( ده للتوضيح بس ) وهيكتب عليه من برا add ( اللى هو اسم ال Function اللى عندنا ) وهيكون جوا الصندوق ده الحاجات دى
- هيعمل Reference ل Function اسمها add ( هنا بيخزن Reference بس انما الكود بتاع ال Function بيتخزن فى مكان تانى فى ال RAM ) وال Reference ده بيشاور على الكود بتاع ال Function دى
- هيخزن جواه تلاته variables وهما numberOne , numberTwo , sum
- هيخزن Object فى ال Heap من ال Calculator class وهيعمل Reference بيشاور على ال Object ده بس ال Reference ده هيكون جوا الصندوق اللى اسمه add ده
وبكدا نكون فهمنا ان ال Primitive data types لو هى Local variables فهيا بتتخزن جوا ال Stack ( لأنها بتكون مرتبطة بال Function مش مرتبطة بال Class )
ولو ال Primitive data types عبارة عن Global variable فيها هنا مش هتكون مرتبطة بأى Function وانما هتكون مرتبطة بال Class بشكل عام ومرتبطة بأى Object بيتم انشائه من ال Class ده
وزى ما احنا قولنا ان أى Object بيتم انشائه بيتخزن فى ال Heap بمحتواياته
ومن ضمن محتواياته بيكون ال Variables اللى جواه اللى هيا بتكون فى الاساس Global variables
وبكدا نكون فهمنا ان ال Primitive data types لو هى Global variables فهيا بتتخزن جوا ال Heap ( لأنها بتكون مرتبطة بال Class وتحديدا بال Object اللى بيتم انشائه من ال Class ده ومش بتكون مرتبطة ب Function معينه )
ومن فهمك للجزء اللى شرحناه انت بقيت قادر انك تحدد مكان تخزين ال Static variables بناء على الجزء اللى هيا بتكون مرتبطه بيه سواء Class او Function
ال Primitive data types لو هى Local variables فهيا بتتخزن جوا ال Stack
ال Primitive data types لو هى Global variables فهيا بتتخزن جوا ال Heap
اى Non-Primitive data types ( ال Reference data types ) بتتخزن فى ال Heap
وهل بيفرق لو ال Variable ده Static variable ولا لأ ؟!
اتكلمنا فى موضوع سابق ان ال Primitive data types بتتخزن بشكل عام فى ال Stack
وان ال Non-Primitive data types ( ال Reference data types ) بتتخزن فى ال Heap
بس ال Primitive data types ممكن تبقا Local variable وممكن تبقا Global variable
فانت هتقولى هيا هتفرق طريقة تخزينها فى ال Memory بناء على نوعها Local او Global ؟
هقولك ايوة وكمل قراءة معايا للاخر علشان نفهم هتفرق ازاى فى طريقة التخزين
وعلشان نفهم الفرق بين ال Local variable وال Global variable فى طريقة التخزين فهنحتاج نفهم ازاى الداتا بتتخزن فى ال Stack بتعمق شوية
ال Stack ده زى ما قولنا جزء فى ال RAM بيتخزن فيه الداتا وتحديدا ال Primitive data types
وخلينى اضربلك مثال بسيط على طريقة التخزين فى ال Stack
Code:
public void add (int numberOne , int numberTwo ){
int sum = numberOne + numberTwo ;
Calculator cal = new Calculator () ;
}
ال Stack هيخزن ال Function دى كالتالى
هيعمل صندوق ( ده للتوضيح بس ) وهيكتب عليه من برا add ( اللى هو اسم ال Function اللى عندنا ) وهيكون جوا الصندوق ده الحاجات دى
- هيعمل Reference ل Function اسمها add ( هنا بيخزن Reference بس انما الكود بتاع ال Function بيتخزن فى مكان تانى فى ال RAM ) وال Reference ده بيشاور على الكود بتاع ال Function دى
- هيخزن جواه تلاته variables وهما numberOne , numberTwo , sum
- هيخزن Object فى ال Heap من ال Calculator class وهيعمل Reference بيشاور على ال Object ده بس ال Reference ده هيكون جوا الصندوق اللى اسمه add ده
وبكدا نكون فهمنا ان ال Primitive data types لو هى Local variables فهيا بتتخزن جوا ال Stack ( لأنها بتكون مرتبطة بال Function مش مرتبطة بال Class )
ولو ال Primitive data types عبارة عن Global variable فيها هنا مش هتكون مرتبطة بأى Function وانما هتكون مرتبطة بال Class بشكل عام ومرتبطة بأى Object بيتم انشائه من ال Class ده
وزى ما احنا قولنا ان أى Object بيتم انشائه بيتخزن فى ال Heap بمحتواياته
ومن ضمن محتواياته بيكون ال Variables اللى جواه اللى هيا بتكون فى الاساس Global variables
وبكدا نكون فهمنا ان ال Primitive data types لو هى Global variables فهيا بتتخزن جوا ال Heap ( لأنها بتكون مرتبطة بال Class وتحديدا بال Object اللى بيتم انشائه من ال Class ده ومش بتكون مرتبطة ب Function معينه )
ومن فهمك للجزء اللى شرحناه انت بقيت قادر انك تحدد مكان تخزين ال Static variables بناء على الجزء اللى هيا بتكون مرتبطه بيه سواء Class او Function
ال Primitive data types لو هى Local variables فهيا بتتخزن جوا ال Stack
ال Primitive data types لو هى Global variables فهيا بتتخزن جوا ال Heap
اى Non-Primitive data types ( ال Reference data types ) بتتخزن فى ال Heap