English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تعليمات Java الأساسية

تحكم العملية في Java

مجموعات Java Array

Java موجه الأقران (I)

Java موجه الأقران (II)

Java موجه الأقران (III)

معالجة الاستثناءات Java

قوائم Java (List)

Java Queue (الصف)

مجموعات Java Map

مجموعات Java Set

إدخال/إخراج Java (I/O)

قراء/كتابة Java

موضوعات أخرى في Java

أنواع البيانات الأساسية Java

المتغير هو طلب مساحة في الذاكرة لتخزين القيمة. أي أن عند إنشاء المتغير، يجب طلب مساحة في الذاكرة.

يقوم نظام إدارة الذاكرة بتخصيص مساحة التخزين للمتغير بناءً على نوع المتغير، ويمكن استخدام المساحة المخصصة فقط لتخزين بيانات هذا النوع.

لذلك، من خلال تعريف أنواع متعددة من المتغيرات، يمكن تخزين الأعداد الصحيحة أو الأعداد العشرية أو الأحرف في ذاكرة الوحدة.

أكبر نوعين في Java:

  • أنواع البيانات المدمجة

  • أنواع البيانات المفردة

أنواع البيانات المدمجة

يقدم لغة Java ثماني أنواع بيانات أساسية. ستة أنواع عددية (أربعة أنواع كاملة، نوعان عشريان)، نوع حرفي، ونوع منطقي.

byte:

  • نوع البيانات byte هو عدد صحيح 8 بت، مكتوب بإشارة عكسية الثنائية.

  • أصغر قيمة هي -128 (-2^7);

  • أكبر قيمة هي 127 (2^7-1);

  • القيمة الافتراضية هي 0;

  • يستخدم نوع البيانات byte لتوفير مساحة في مجموعات كبيرة، ويستبدل الأعداد الصحيحة، لأن مساحة متغير byte هي ربع مساحة متغير int.

  • مثال: byte a = 100،byte b = -50.

short:

  •  نوع البيانات short هو عدد صحيح 16 بت، مكتوب بإشارة عكسية الثنائية.

  •  أصغر قيمة هي -32768 (-2^15);

  •  أكبر قيمة هي 32767 (2^15 - 1);

  •  يمكن استخدام نوع البيانات Short أيضًا لتوفير مساحة، مثل byte. متغير short يأخذ نصف مساحة متغير int.

  •  القيمة الافتراضية هي 0;

  • مثال: short s = 1000،short 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.

long:

  • نوع البيانات long هو عدد صحيح 64 بت، مكتوب بإشارة عكسية الثنائية.

  • أصغر قيمة هي -9,223,372,036,854,775,808 (-2^63);

  • أكبر قيمة هي 9,223,372,036,854,775,807 (2^63 -1);

  • يستخدم هذا النوع بشكل رئيسي في الأنظمة التي تحتاج إلى معالجة أعداد كبيرة من الأعداد الصحيحة؛

  • القيمة الافتراضية هي 0L;

  •  مثال: long a = 100000L،Long b = -200000L.
    "L" لا يهم في النص النظري سواء كان كبيرًا أو صغيرًا، ولكن إذا كتبت "l" فإنه يسهل الخلط بينه وبين الرقم "1"، مما يجعله صعب التمييز. لذا من الأفضل استخدام الحرف الكبير.

float:

  • نوع البيانات float هو عدد عشري بيانسي، 32 بت، يتوافق مع معيار IEEE 754.

  • يمكن استخدام float لتوفير مساحة ذاكرة عند تخزين مجموعات كبيرة من العدد العشري؛

  •  القيمة الافتراضية هي 0.0f;

  •  العدد العشري لا يمكن استخدامه لتمثيل القيم الدقيقة، مثل العملة;

  •  مثال: float f1 = 234.5f.

double:

  • نوع البيانات double هو عدد عشري ذو دقة عالية، ذو 64 بت، يتوافق مع معيار IEEE 754;

  •  نوع البيانات المعدد العشري الافتراضي هو نوع double;

  •  نوع البيانات double لا يمكنه التعبير عن القيم الدقيقة مثل العملات;

  •  قيمته الافتراضية هي 0.0d;

  •  مثال: double d1 = 123.4。

boolean:

  •  نوع البيانات boolean يمثل معلومات نقطية واحدة;

  • يوجد لديه قيمتان فقط: true و false;

  •  يستخدم هذا النوع كعلامة لتسجيل حالة true/false فقط;

  •  قيمته الافتراضية هي false;

  •  مثال: boolean one = true。

char:

  •  نوع البيانات char هو وحدات Unicode 16 بت واحدة;

  •   أصغر قيمته هي

  •  أكبر قيمته هي ￿ (وهي 65,535);

  •  نوع البيانات char يمكن حفظ أي حرف;

  •  مثال: char letter = 'A';.

مثال

لن نضطر إلى تذكر نطاق القيم لعدة أنواع الأساسي للعددية، لأن قيمها معينة بالفعل كمعادلات ثابتة في التعريف المقابل.

public class PrimitiveTypeTest {  
    public static void main(String[] args) {  
        // ‎byte  
        System.out.println("نوع الأساسي: byte ‎عدد أجزاء البايت: " + 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();  
  
        // ‎short  
        System.out.println("نوع الأساسي: short ‎عدد أجزاء البايت: " + 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();  
  
        // ‎int  
        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();  
  
        // long  
        System.out.println("基本类型:long 二进制位数:" + 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();  
  
        // float  
        System.out.println("基本类型:float 二进制位数:" + 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();  
  
        // double  
        System.out.println("基本类型:double 二进制位数:" + 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();  
  
        // char  
        System.out.println("基本类型:char 二进制位数:" + Character.SIZE);  
        System.out.println("طبيعة التغليف: java.lang.Character");  
        //إخراج Character.MIN_VALUE بصيغة عددية وليس بصيغة حرفية إلى الشاشة  
        System.out.println("القيمة الأدنى: Character.MIN_VALUE=");  
                +(int)Character.MIN_VALUE);  
        //إخراج Character.MAX_VALUE بصيغة عددية وليس بصيغة حرفية إلى الشاشة  
        System.out.println("القيمة القصوى: Character.MAX_VALUE=");  
                +(int)Character.MAX_VALUE);  
    }  
}

تخليل الكود أعلاه، الناتج كما يلي:

نوع الأساسي: byte  عدد الأنوية الثنائية: 8
طبيعة التغليف: java.lang.Byte
القيمة الأدنى: Byte.MIN_VALUE=-128
القيمة القصوى: Byte.MAX_VALUE=127
نوع الأساسي: short  عدد الأنوية الثنائية: 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
نوع الأساسي: long  عدد الأنوية الثنائية: 64
طبيعة التغليف: java.lang.Long
القيمة الأدنى: Long.MIN_VALUE=-9223372036854775808
القيمة القصوى: Long.MAX_VALUE=9223372036854775807
نوع الأساسي: float  عدد الأنوية الثنائية: 32
طبيعة التغليف: java.lang.Float
القيمة الأدنى: Float.MIN_VALUE=1.4E-45
القيمة القصوى: Float.MAX_VALUE=3.4028235E38
نوع الأساسي: double  عدد الأنوية الثنائية: 64
طبيعة التغليف: java.lang.Double
القيمة الأدنى: Double.MIN_VALUE=4.9E-324
القيمة القصوى: Double.MAX_VALUE=1.7976931348623157E308
نوع الأساسي: char  عدد الأنوية الثنائية: 16
طبيعة التغليف: java.lang.Character
最小值:Character.MIN_VALUE=0
最大值:Character.MAX_VALUE=65535

Float和Double的最小值和最大值都是以科学记数法的形式输出的,结尾的"E+数字"表示E之前的数字要乘以10的多少次方。比如3.14E3就是3.14 × 103 =3140,3.14E-3 就是 3.14 x 10-3 =0.00314。

实际上,JAVA中还存在另外一种基本类型 void,它也有对应的包装类 java.lang.Void,不过我们无法直接对它们进行操作。

类型默认值

下表列出了 Java 各个类型的默认值:

数据类型默认值
byte0
short0
int0
long0L
float0.0f
double0.0d
char'u0000'
String (or any object)null
booleanfalse

在线示例

public class Test {
    static boolean bool;
    static byte by;
    static char ch;
    static double d;
    static float f;
    static int i;
    static long l;
    static short sh;
    static String str;
 
    public static void main(String[] args) {
        System.out.println("Bool:\u0662 +\u0662 bool);
        System.out.println("Byte:\u0662 +\u0662 by);
        System.out.println("Character:\u0662 +\u0662 ch);
        System.out.println("Double:\u0662 +\u0662 d);
        System.out.println("Float:\u0662 +\u0662 f);
        System.out.println("Integer:\u0662 +\u0662 i);
        System.out.println("Long:\u0662 +\u0662 l);
        System.out.println("Short:\u0662 +\u0662 sh);
        System.out.println("String:\u0662 +\u0662 str);
    }
}

نتيجة الخروج المثالية هي: }}

Bool :false
Byte :0
Character:
Double :0.0
Float :0.0
Integer :0
Long :0
Short :0
String :null

 أنواع الإشارة

  •  في Java، تشبه متغيرات النوع الإشارة مفاتيح C/C++.

  • المنتجات والمساحات هي أنواع بيانات إشارة.

  •  كل أنواع الإشارات اللازمة هي null بالافتراض.

  •  يمكن استخدام متغير الإشارة للاشارة إلى أي نوع متوافق.

  •  مثال: Site site = new Site("w3codebox").

كلمات ثابتة Java

لا يمكن تعديل الكلمات الثابتة أثناء تشغيل البرنامج.

في Java، يتم استخدام كلمة المفتاح final لتحديد الكلمات الثابتة، ويكون الشكل مشابهًا للتعريف المتغير:

final double PI = 3.1415927;

يمكن استخدام اسم الكلمة الثابتة بالحروف الصغيرة، ولكن لسهولة التعرف عليها، عادة ما يتم استخدام الحروف الكبيرة.

يمكن تعيين القيم الثابتة للكلمات الثابتة من أي نوع داخلي. على سبيل المثال:

byte a = 68;
char a = 'A';

يمكن استخدام العدد العشري والستة عشر والثماني للتعامل مع byte، int، long وshort.

عند استخدام الكلمات الثابتة، يشير الدليل 0 إلى نظام العشرة الأساسي، بينما يشير الدليل 0x إلى نظام العشرة الستة عشر، على سبيل المثال:

int decimal = 100;
int octal = 0144;
int hexa = 0x64;

كجميع اللغات الأخرى، فإن كلمات النص الثابتة في Java تتكون من سلسلة من الأحرف بين علامتي اقتباس.

"Hello World"
"two\nlines"
"\"This is in quotes\""

يمكن للكلمات الثابتة النصية والكلمات الثابتة الحرفية أن تحتوي على أي حرف Unicode. على سبيل المثال:

char a = '\u0001';
String a = "\u0001";

تدعم لغة Java سلاسل الترقيم الخاصة.

                        الرمز                        معنى الحرف
                        \n                        مفتاح newline (0x0a)
                        \r                        مفتاح Enter (0x0d)
                        \f                        مفتاح الصفحة (0x0c)
                        \b                        مفتاح backspace (0x08)
                        \0                        حرف فاصلة (0x0)
                        \s                        مسافة (0x20)
                        \t                        مفتاح tab
                        \"                        علامات اقتباس
                        \'                        أقواس علوية
                        \\                        شق
                        \ddd                        حرف ثماني (ddd)
                        \uxxxx                        حرف Unicode عشري (xxxx)

التحويل التلقائي للنوع

يمكن دمج البيانات النوعية الكاملة، النوعية الحقيقية (الاستدلالات) والنوعية الحرفية في الحسابات. في الحسابات، يتم تحويل البيانات النوعية المختلفة إلى نفس النوع ثم الحساب.

التحويل من منخفض إلى عالي.

منخفض ———-> ———-> عالي
byte,short,char —> int —> long —> float —> double

تحويل أنواع البيانات يجب أن يكون ملائماً للقواعد التالية:

  • 1. لا يمكن تحويل نوع البيانات boolean.

  • 2. لا يمكن تحويل نوع البيانات الأجرام إلى أجرام غير مرتبطة.

  • 3. عند تحويل نوع البيانات الكبير إلى نوع البيانات الصغير يجب استخدام تحويل القوة.

  • 4. يمكن أن يؤدي التحويل إلى انسياب أو فقدان دقة، على سبيل المثال:

    int i = 128;   
    byte b = (byte)i;

    بما أن نوع البيانات byte هو 8 الرقم، القيمة القصوى هي 127، لذا عند تحويل int إلى نوع البيانات byte، القيمة 128 ستجعل هناك انسياب.

  • 5. تحويل الأعداد العشرية إلى أعداد صحيحة يتم عن طريق التخلص من الأجزاء الصغيرة وليس التبديل، على سبيل المثال:

    (int)23.7 == 23;        
    (int)-45.89f == -45

التحويل التلقائي للنوع

يجب أن يكون عدد الأرقام في نوع البيانات قبل التحويل أقل من عدد الأرقام في نوع البيانات بعد التحويل، على سبيل المثال: عدد الأرقام في نوع البيانات short هو 16، لذا يمكن تحويله إلى نوع البيانات int ذو 32 الرقم، وبه نفس الشكل يمكن تحويل نوع البيانات float ذو 32 الرقم إلى نوع البيانات double ذو 64 الرقم.

public class ZiDongLeiZhuan{
        public static void main(String[] args){
            char c1 = 'a'; // تعريف نوع char
            int i1 = c1; // التحويل التلقائي من char إلى int
            System.out.println("قيمة التحويل التلقائي من char إلى int هي " + i1);
            char c2 = 'A'; // تعريف نوع char
            int i2 = c2 + 1; // حساب char النوع و النوع int
            System.out.println("قيمة char النوع ونتيجة الحساب مع int هي " + i2);
        }
}

نتيجة التنفيذ هي:

قيمة التحويل التلقائي من char إلى int هي 97
قيمة char النوع ونتيجة الحساب مع int هي 66

التفسير:قيمة c1 هي حرف a يمكنك البحث في جدول ASCII لمعرفة القيمة النسبية من النوع int هي 97، A هي 65، لذا i2=65+1=66.

تحويل نوع غير مباشر

  • 1. الشروط هي أن يكون نوع البيانات الذي يتم تحويله متوافقًا.

  • 2. النمط: (نوع)قيمة نوع هو نوع البيانات الذي سيتم تحويله   مثال:

    public class QiangZhiZhuanHuan{
        public static void main(String[] args){
            int i1 = 123;
            byte b = (byte)i1; // تحويل نوع غير مباشر
            System.out.println("قيمة b بعد تحويل int إلى byte تساوي " + b);
        }
    }

    نتيجة التنفيذ:

    القيمة بعد تحويل int إلى byte تساوي 123

تحويل نوع غير مباشر

  • 1. النوع العددي الصحيح هو int بشكل افتراضي.

  • 2. لا يوجد هذا الموقف في النوع العددي الفائق، لأنه يجب إضافة F أو f بعد عدد عند تعريف نوع float.

هذه الفقرة شرحت أنواع البيانات الأساسية في Java. الفقرة التالية ستتناول أنواع المتغيرات المختلفة واستخداماتها.