گوناگون

لیترال چیست و در برنامه نویسی چه معنایی دارد؟

نوشته شده توسط نصیر بهرامی دوست

هنوز در کانال تلگرامی neobit عضو نیستید؟ روی این لینک کلیک کنید و همین حالا عضو شوید!

یکی از کارهای مهمی که برنامه نویسان از اولین روزی که برنامه نویسی را شروع می کنند و تا زمانی که برنامه نویسی را ادامه می دهند ، انجام می دهند تعریف متغیر است . ما در کدهایمان مقادیری را بر اساس نوع متغیر در آنها ذخیره می کنیم . به این مقادیر لیترال می گویند . با این توضیحات اگر بخواهیم لیترال را دقیق تر تعریف کنیم اینگونه آن را تعریف خواهیم کرد : هر مقدار ثابتی را که بتوان در متغیر ذخیره کرد لیترال می گویند . لیترال ها بدون هیچ گونه محاسبه ای مستقیماً در کد نشان داده می شوند . به مثال زیر توجه کنید :

// Here 100 is a constant/literal.
int x = 100;

در این مثال 100 یک لیترال است.

در جاوا لیترال ها به شش دسته به صورت زیر تقسیم می شوند :
لیترال های عددی
لیترال های اعشاری
لیترال های کاراکتری
لیترال های رشته ای
لیترال های بولی
لیترال های null

بسیار عالی . برویم و تک تک تمام موارد بالا را با مثال بررسی کنیم :

لیترال های عددی

لیترال های عددی را به چهار روش می توان تعریف کرد :

لیترال های دسیمال (مبنای 10) : در این نوع تنها مجاز به استفاده از اعداد 9-0 هستیم :

int x = 101;

لیترال های اکتال ( مبنای 8) : در این نوع تنها مجاز به استفاده از از اعداد 7-0 هستیم . نکته بسیار مهم در تعریف این نوع لیترال استفاده از 0 به عنوان پیشوند ( prefix) می باشد :

// The octal number should be prefix with 0.
int x = 0146;

لیترال های هگزادسیمال ( مبنای 16) : در تعریف این نوع ما از ترکیب اعداد و حروف استفاده می کنیم . اعداد مجاز 9-0 و حروف مجاز a-f می باشند . همانطور که میدانید جاوا به حروف کوچک و بزرگ حساس است اما در تعریف لیترال های هگزادسیمال مهم نیست از حروف کوچک یا بزرگ استفاده کنیم . توجه داشته باشید در تعریف باید از پیشوند 0x استفاده کنیم :

// The hexa-decimal number should be prefix
// with 0X or 0x.
int x = 0X123Face;

لیترال های باینری یا دودویی : از جاوا 7 این امکان وجود دارد لیترال های باینری نیز تعریف کنیم . از نام باینری پیدا است در تعریف این نوع فقط می توانیم از اعداد 0 و 1 استفاده کنیم . از پیشوند 0b یا 0B برای تعریف این نوع لیترال استفاده می کنیم :

int x = 0b1111;
public class Test {
    public static void main(String[] args)
    {
        int a = 101; 
        int b = 0100;
        int c = 0xFace;
        int d = 0b1111;
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println(d);
    }
}

توجه : به صورت پیش فرض لیترال های عددی از نوع int هستند و اگر بخواهیم لیترالی را برای نوع long تعریف کنیم باید از l یا L استفاده کنیم . در ضمن هیچ راهی برای تعریف نوع های short و byte به صورت مستقیم وجود ندارد . زمانی که یک لیترال عددی را به یک نوع byte تخصیص می دهیم اگر مقدار تخصیصی در محدوده این نوع باشد ، کامپایلر به طور خودکار به عنوان بایت با آن مقدار رفتار می کند.

لیترال های اعشاری

برای لیترال های اعشاری ، ما تنها مجاز به استفاده از لیترال های دسیمال یا بهتر بگویم مبنای ده هستیم و لیترال های اکتال و هگزا دسیمال نداریم . در جاوا ما دو نوع اعشاری داریم float و double . این نکته را بدانید که در جاوا به صورت پیش فرض لیترال های اعشاری از نوع double هستند و برای تعریف نوع float باید از f یا F استفاده کنیم . در تعریف لیترال های اعشاری تنها از اعداد 9-0 می توانیم استفاده کنیم :

double d = 123.456;
public class Test {
    public static void main(String[] args)
    {
        float a = 101.230f; 
        float b = 0123.222f; 
        System.out.println(a);
        System.out.println(b);

    }
}

لیترال های کاراکتری

لیترال های کاراکتری را به چهار روش می توان ایجاد کرد :
Single quote : رایج ترین روش تعریف لیترال کاراکتر می باشد . به این صورت که کاراکتر مورد نظر را بین دو تک کوتیشن قرار ( ‘ ) می دهیم :

char ch = 'a';

لیترال عددی به عنوان کاراکتر : تمامی کاراکترها دارای یک کد اسکی ( یونیکد ) هستند که ما می توانیم به جای ذخیره مستقیم کاراکتر از این کد که یک عدد می باشد استفاده کنیم :

char ch = 062;

یونیکد : ما می توانیم کاراکتر را به صورت یونیکد و به به فرمت ‘\uxxxx’ به عنوان لیترال کاراکتر در نظر بگیریم . در اینجا xxxx نشان دهنده 4 عدد هگزادسیمال است .

char ch = '\u0061';// Here /u0061 represent a.

Escape Sequence : تمام کاراکتر های فرار را می توان به عنوان لیترال کاراکتر تعریف کرد :

char ch = '\n';
public class Runner {
    public static void main(String[] args) {
        char ch = 'a'; 
        char b = 789; 
        char c = '\u0061';
        System.out.println(ch);
        System.out.println(b);
        System.out.println(c);
        System.out.println("\"  is a symbol");

    }
}

لیترال های رشته ای

رسیدیم به مهمترین لیترال یعنی لیترال رشته ای یا همان String . هر دنباله ای از کاراکترها که بین دو دابل کوتیشن ( ” ) قرار گیرد به عنوان لیترال رشته ای تلقی می شود.

String s = "Hello";

جاوا این امکان را برای ما فراهم کرده است تا درون لیترال رشته ای از کاراکترهای فرار استفاده کنیم . زمانیکه کامپایلر جاوا به این کاراکترها می رسد آن ها را پردازش می کند و خروجی مورد انتظار ما را ایجاد می کند : به طور مثال رشته زیر در صورت نمایش در خروجی در سه خط مجزا قرار می گیرد :

String text = "This is a String literal\n"
            + "which spans not one and not two\n"
            + "but three lines of text.\n";
public class Runner {
    public static void main(String[] args) {
        String s = "Hello";
        System.out.println(s);
    }
}

لیترال های بولی

فقط دو مقدار true و false برای لیترال boolean مجاز است .

boolean b = true;
public class Runner {
    public static void main(String[] args) {
        boolean b = true;
        boolean c = false;
        System.out.println(b);
        System.out.println(c);
    }
}

لیترال های null

آخرین نوع لیترال های ما null می باشد . در همین جا این نکته را به شما بگویم در خیلی از منابع لیترال null جز دسته بندی لیترال ها در نظر گرفته نشده است اما من تصمیم گرفتم null را جز این دسته بندی قرار دهم . null را زمانی استفاده می کنیم که می خواهیم reference یک شی را تهی قرار دهیم .

String hello = null;

دربارۀ نویسنده

نصیر بهرامی دوست

دیدگاه

پاسخ شما به این دیدگاه