تنطبق المتغيرات على الذاكرة لتخزين القيم. بمعنى آخر، عند إنشاء متغير، تحتاج إلى التقدم للحصول على مساحة في الذاكرة.
يقوم نظام إدارة الذاكرة بتخصيص مساحة تخزين للمتغيرات حسب نوعها، ولا يمكن استخدام المساحة المخصصة إلا لتخزين البيانات من هذا النوع.
لذلك، من خلال تحديد متغيرات من أنواع مختلفة، يمكن تخزين الأعداد الصحيحة أو الكسور العشرية أو الأحرف في الذاكرة.
نوعان رئيسيان من البيانات في Java:
أنواع البيانات المضمنة
نوع البيانات المرجعية
توفر لغة جافا ثمانية أنواع أساسية. ستة أنواع رقمية (أربعة أعداد صحيحة، ونوعان من الفاصلة العائمة)، ونوع أحرف، ونوع منطقي.
نوع البايت:
نوع البيانات البايت هو عدد صحيح مكون من 8 بتات وموقّع وممثل في تكملة اثنين؛
الحد الأدنى للقيمة هو -128 (-2^7)؛
الحد الأقصى للقيمة هو 127 (2^7-1)؛
القيمة الافتراضية هي 0؛
يتم استخدام نوع البايت لتوفير المساحة في المصفوفات الكبيرة، واستبدال الأعداد الصحيحة بشكل أساسي، لأن متغير البايت يشغل ربع مساحة النوع int فقط؛
مثال: البايت أ = 100، البايت ب = -50.
النوع القصير (نوع عدد صحيح قصير):
نوع البيانات القصير هو عدد صحيح مكمل مكون من 16 بت.
الحد الأدنى للقيمة هو -32768 (-2^15)؛
الحد الأقصى للقيمة هو 32767 (2^15 - 1);
يمكن لنوع البيانات القصيرة أيضًا توفير مساحة مثل البايت. المتغير القصير هو نصف المساحة التي يشغلها متغير من النوع int؛
القيمة الافتراضية هي 0؛
مثال: قصير s = 1000، قصير r = -20000.
نوع int (نوع عدد صحيح):
نوع البيانات int عبارة عن عدد صحيح بعلامة 32 بت وممثل في تكملة اثنين؛
الحد الأدنى للقيمة هو -2,147,483,648 (-2^31)؛
الحد الأقصى للقيمة هو 2,147,483,647 (2^31 - 1);
بشكل عام، المتغيرات الصحيحة تكتب int؛
القيمة الافتراضية هي 0؛
مثال: int a = 100000، int b = -200000.
طويل (نوع عدد صحيح طويل):
نوع البيانات الطويل هو عدد صحيح موقّع 64 بت ممثل في تكملة اثنين؛
الحد الأدنى للقيمة هو -9,223,372,036,854,775,808 (-2^63)؛
الحد الأقصى للقيمة هو 9,223,372,036,854,775,807 (2^63 -1);
يُستخدم هذا النوع بشكل أساسي في الأنظمة التي تحتاج إلى مقارنة الأعداد الصحيحة الكبيرة؛
القيمة الافتراضية هي 0L؛
مثال: طويل أ = 100000 لتر، طويل ب = -200000 لتر.
تعويم (نوع النقطة العائمة ذات الدقة الواحدة):
نوع البيانات العائمة هو رقم فاصلة عائمة أحادي الدقة، 32 بت، يتوافق مع معيار IEEE 754؛
يمكن للتعويم توفير مساحة الذاكرة عند تخزين مصفوفات الفاصلة العائمة الكبيرة؛
القيمة الافتراضية هي 0.0f؛
لا يمكن استخدام أرقام الفاصلة العائمة لتمثيل قيم دقيقة مثل العملة؛
مثال: تعويم f1 = 234.5f.
مزدوج (نوع النقطة العائمة مزدوج الدقة):
نوع البيانات المزدوج هو رقم فاصلة عائمة مزدوج الدقة، 64 بت، متوافق مع IEEE 754؛
النوع الافتراضي لأرقام الفاصلة العائمة هو مزدوج؛
لا يمكن للنوع المزدوج أيضًا أن يمثل قيمًا دقيقة، مثل العملة؛
القيمة الافتراضية هي 0.0d؛
مثال: مزدوج d1 = 123.4.
منطقية:
يمثل نوع البيانات المنطقية بتًا واحدًا من المعلومات؛
هناك قيمتان فقط: صحيح وكاذب؛
يُستخدم هذا النوع فقط كعلامة لتسجيل مواقف الصواب/الخطأ؛
القيمة الافتراضية خاطئة؛
مثال: منطقي واحد = صحيح.
شار (نوع الحرف):
نوع الحرف هو حرف Unicode واحد بطول 16 بت؛
الحد الأدنى للقيمة هو 'u0000' (أي 0)؛
الحد الأقصى للقيمة هو 'uffff' (أي 65,535)؛
يمكن لنوع البيانات char تخزين أي حرف؛
مثال: حرف char = 'A'.
بالنسبة لنطاق القيمة للأنواع الأساسية من الأنواع الرقمية، لا نحتاج إلى أن نضطر إلى التذكر، لأن قيمها قد تم تعريفها في فئة الغلاف المقابلة في شكل ثوابت. يرجى الاطلاع على المثال التالي:
الطبقة العامة PrimitiveTypeTest {
public static void main(String[] args) {
// بايت
System.out.println("النوع الأساسي: أرقام ثنائية بايت:" + Byte.SIZE);
System.out.println("فئة التغليف: java.lang.Byte");
System.out.println("القيمة الدنيا: Byte.MIN_VALUE=" + Byte.MIN_VALUE);
System.out.println("القيمة القصوى: Byte.MAX_VALUE=" + Byte.MAX_VALUE);
System.out.println();
// قصير
System.out.println("النوع الأساسي: أرقام ثنائية قصيرة:" + Short.SIZE);
System.out.println("فئة التغليف: java.lang.Short");
System.out.println("القيمة الدنيا: Short.MIN_VALUE=" + Short.MIN_VALUE);
System.out.println("القيمة القصوى: Short.MAX_VALUE=" + Short.MAX_VALUE);
System.out.println();
// كثافة العمليات
System.out.println("النوع الأساسي: أرقام ثنائية int:" + Integer.SIZE);
System.out.println("فئة التغليف: java.lang.Integer");
System.out.println("القيمة الدنيا: Integer.MIN_VALUE=" + Integer.MIN_VALUE);
System.out.println("القيمة القصوى: Integer.MAX_VALUE=" + Integer.MAX_VALUE);
System.out.println();
// طويل
System.out.println("النوع الأساسي: طويل عدد الأرقام الثنائية:" + Long.SIZE);
System.out.println("فئة التغليف: java.lang.Long");
System.out.println("القيمة الدنيا: Long.MIN_VALUE=" + Long.MIN_VALUE);
System.out.println("القيمة القصوى: Long.MAX_VALUE=" + Long.MAX_VALUE);
System.out.println();
// يطفو
System.out.println("النوع الأساسي: عدد الأرقام الثنائية العائمة:" + Float.SIZE);
System.out.println("فئة التغليف: java.lang.Float");
System.out.println("القيمة الدنيا: Float.MIN_VALUE=" + Float.MIN_VALUE);
System.out.println("القيمة القصوى: Float.MAX_VALUE=" + Float.MAX_VALUE);
System.out.println();
//مزدوج
System.out.println("النوع الأساسي: أرقام ثنائية مزدوجة:" + Double.SIZE);
System.out.println("فئة التغليف: java.lang.Double");
System.out.println("الحد الأدنى للقيمة: Double.MIN_VALUE=" + Double.MIN_VALUE);
System.out.println("القيمة القصوى: Double.MAX_VALUE=" + Double.MAX_VALUE);
System.out.println();
// شار
System.out.println("النوع الأساسي: char الأرقام الثنائية:" + Character.SIZE);
System.out.println("فئة التغليف: java.lang.Character");
// إخراج Character.MIN_VALUE إلى وحدة التحكم في شكل رقمي بدلاً من شكل الحرف System.out.println("Minimum value: Character.MIN_VALUE="
+ (int) Character.MIN_VALUE)؛
// إخراج Character.MAX_VALUE إلى وحدة التحكم في شكل رقمي بدلاً من شكل الحرف System.out.println("القيمة القصوى: Character.MAX_VALUE="
+ (int) Character.MAX_VALUE)؛
}
}
مخرجات تجميع الكود أعلاه هي كما يلي:
النوع الأساسي: بايت الأرقام الثنائية: 8
فئة التغليف: java.lang.Byte
الحد الأدنى للقيمة: Byte.MIN_VALUE=-128
الحد الأقصى للقيمة: Byte.MAX_VALUE=127
النوع الأساسي: أرقام ثنائية قصيرة: 16
فئة التغليف: java.lang.Short
الحد الأدنى للقيمة: Short.MIN_VALUE=-32768
الحد الأقصى للقيمة: Short.MAX_VALUE=32767
النوع الأساسي: int الأرقام الثنائية: 32
فئة التغليف: java.lang.Integer
الحد الأدنى للقيمة: Integer.MIN_VALUE=-2147483648
الحد الأقصى للقيمة: Integer.MAX_VALUE=2147483647
النوع الأساسي: طويل عدد الأرقام الثنائية: 64
فئة التغليف: java.lang.Long
الحد الأدنى للقيمة: Long.MIN_VALUE=-9223372036854775808
الحد الأقصى للقيمة: Long.MAX_VALUE=9223372036854775807
النوع الأساسي: عائم عدد الأرقام الثنائية: 32
فئة التغليف: java.lang.Float
الحد الأدنى للقيمة: Float.MIN_VALUE=1.4E-45
الحد الأقصى للقيمة: Float.MAX_VALUE=3.4028235E38
النوع الأساسي: مزدوج الأرقام الثنائية: 64
فئة التغليف: java.lang.Double
الحد الأدنى للقيمة: Double.MIN_VALUE=4.9E-324
الحد الأقصى للقيمة: Double.MAX_VALUE=1.7976931348623157E308
النوع الأساسي: شار الأرقام الثنائية: 16
فئة التغليف: java.lang.Character
الحد الأدنى للقيمة: Character.MIN_VALUE=0
الحد الأقصى للقيمة: Character.MAX_VALUE=65535
يتم إخراج الحد الأدنى والحد الأقصى لقيم Float وDouble في شكل تدوين علمي، ويعني "E+number" في النهاية أن الرقم قبل E يجب ضربه بقوة "الرقم" 10. على سبيل المثال، 3.14E3 هو 3.14×1000=3140، و3.14E-3 هو 3.14/1000=0.00314.
في الواقع، هناك نوع أساسي آخر فارغ في JAVA، والذي يحتوي أيضًا على فئة تعبئة مقابلة java.lang.Void، لكن لا يمكننا العمل عليها بشكل مباشر.
يتم إنشاء متغيرات النوع المرجعي بواسطة منشئ الفصل ويمكنك استخدامها للوصول إلى الكائن المشار إليه. يتم تحديد هذه المتغيرات كنوع محدد عند الإعلان عنها، مثل "الموظف" و"Pubbby" وما إلى ذلك. بمجرد الإعلان عن متغير، لا يمكن تغيير نوعه.
الكائنات والمصفوفات هي أنواع بيانات مرجعية.
القيمة الافتراضية لكافة أنواع المراجع فارغة.
يمكن استخدام متغير مرجعي للإشارة إلى أي نوع متوافق.
مثال: حيوان الحيوان = حيوان جديد ("زرافة").
الثابت هو قيمة ثابتة. أنها لا تتطلب الحساب وتمثل القيم المقابلة مباشرة.
يشير الثابت إلى الكمية التي لا يمكن تغييرها. يتم استخدام العلامة النهائية في Java، وطريقة الإعلان مشابهة لطريقة المتغيرات:
النهائي المزدوج PI = 3.1415927؛
على الرغم من أن الأسماء الثابتة يمكن أيضًا أن تكون صغيرة، إلا أنه لسهولة التعرف عليها، يتم عادةً استخدام الأحرف الكبيرة لتمثيل الثوابت.
يمكن تعيين الأحرف الحرفية إلى متغيرات من أي نوع مضمن. على سبيل المثال:
البايت أ = 68؛
شار أ = 'أ'
يمكن تمثيل كل من البايت، والكثافة السكانية، والطويلة، والقصيرة بالتدوين العشري، والست عشري، والثماني.
عند استخدام الثوابت، تشير البادئة 0 إلى النظام الثماني، وتشير البادئة 0x إلى النظام الست عشري. على سبيل المثال:
عدد عشري = 100؛
كثافة العمليات الثماني = 0144؛
كثافة العمليات السداسية = 0x64؛
مثل اللغات الأخرى، ثوابت السلسلة في Java عبارة عن تسلسلات من الأحرف المحصورة بين علامتي اقتباس. فيما يلي مثال على سلسلة حرفية:
"مرحبا بالعالم"
"سطرينn"
""هذا موجود بين علامتي اقتباس""
يمكن أن تحتوي كل من ثوابت السلسلة وثوابت الأحرف على أي حرف Unicode. على سبيل المثال:
شار أ = 'u0001';
السلسلة أ = "u0001"؛
تدعم لغة Java بعض تسلسلات أحرف الهروب الخاصة.
رمز | معنى الحرف |
---|---|
n | تغذية الخط (0x0a) |
ص | أدخل (0x0d) |
و | حرف تغذية النموذج (0x0c) |
ب | مسافة للخلف (0x08) |
حرف فارغ (0x0) | |
س | خيط |
ر | حرف علامة التبويب |
" | اقتباسات مزدوجة |
' | اقتباس واحد |
\ | شرطة مائلة عكسية |
ddd | الأحرف الثمانية (ddd) |
xxxx | أحرف Unicode السداسية العشرية (xxxx) |
يشرح هذا القسم أنواع البيانات الأساسية لجافا. يستكشف القسم التالي أنواع المتغيرات المختلفة واستخداماتها.