CodeGym /Kurslar /JAVA 25 SELF /Simvolların escape edilməsi

Simvolların escape edilməsi

JAVA 25 SELF
Səviyyə , Dərs
Mövcuddur

1. Əsas xüsusi simvollar və escape

Proqramlaşdırmada sətirlər təkcə hərflərdən deyil, həm də xüsusi simvollardan ibarətdir: dırnaqlar, sətirsonları, tabulyasiyalar və bəzən hətta \n\t kimi işarələr. Ancaq sətirdə Salam, "user"! yazmaq istəsəniz, kompilyator dərhal soruşacaq: «Bəs sətir daxilindəki dırnaqlar — bu nədir, səhvdir?». Elə burada escape mexanizmi lazımdır.

Java-da escape — sətirin içindəki bəzi simvollara “xüsusi münasibət” göstərməyin yoludur. Bunun üçün əks kəsik \ (yəni «backslash») istifadə olunur.

Klassik xüsusi simvollar:

Qaçış ardıcıllığı Təsvir Nümayiş
\n
Yeni sətir Enter basıldı
\t
Tabulyasiya Tab
\\
Sözün əsl mənasında “backslash”
\
\"
Sətir daxilində dırnaq işarəsi
"
\'
Tək dırnaq (sətirlərdə nadir hallarda lazımdır)
'
\r
Carriage return (yeni sətirin köhnə üsulu, nadir istifadə olunur)
\0
Null simvolu (Görünməz)
\b
Backspace (əvvəlki simvolu silir — konsolda həmişə işləmir)

Bu necə işləyir

Gəlin, işini görmək üçün escape edilmiş simvollarla bir neçə sətir yazaq.

System.out.println("Salam, \"İstifadəçi\"!");
// Çıxış: Salam, "İstifadəçi"!

System.out.println("C:\\Program Files\\MyApp");
// Çıxış: C:\Program Files\MyApp

System.out.println("Sətir 1\nSətir 2");
// Çıxış:
// Sətir 1
// Sətir 2

System.out.println("Mən\ttabulyasiyanı\tsevirəm!");
// Çıxış:
// Mən         tabulyasiyanı    sevirəm!

Beləcə, cəmi bir sadə xəttin (\) köməyi ilə demək olar ki, istənilən xüsusi simvolu sətirə “daşıya” bilərsiniz, nə kompilyatoru, nə də komanda yoldaşınızı vahiməyə salmadan.

2. Çoxsətirli sətirlər və sətirsonları

Çox vaxt çoxsətirli mesaj və ya ASCII-art yazmaq lazım olur. Ən sadə yol — adi sətirdə \n-dən istifadə etməkdir.

System.out.println("Birinci sətir\nİkinci sətir\nÜçüncü sətir");

Lakin bu, həmişə rahat deyil, buna görə də Java-da mətn blokları (Text Blocks) yarandı. Onlar üçlü dırnaqla """ başlayır və qaçışdan istifadə etmədən çoxsətirli mətn yazmağa imkan verir, formatlaşdırmanı qoruyur — JSON, SQL və HTML üçün idealdır.


// Çoxsətirli literal (Text Block)
String json = """
    {
        "name": "Alice",
        "age": 30,
        "skills": ["Java", "SQL", "Cloud"]
    }
    """;

System.out.println(json);
Java-da mətn blokları """

Mətn blokları ilə dırnaqları təkrarlamadan daxil edən çoxsətirli mətni də asanlıqla yarada bilərsiniz.

3. Unicode — Java-da dünyanın istənilən simvolları necə saxlanılır

Müasir dünyada biz yalnız latın qrafikasından deyil, həm də kiril, heroqliflər, riyazi simvollar və hətta emojilərdən istifadə edirik. Bütün bunlar simvolların kodlaşdırma sistemi — Unicode sayəsində mümkündür.

Unicode nədir?

Unicode — hər bir simvola, dildən və platformadan asılı olmayaraq, unikal nömrə (code point) verən beynəlxalq standartdır. Bunun sayəsində siz Java-da eyni anda kiril mətnini, ingilis dilini, çin heroqliflərini və hətta nadir xüsusi simvolları asanlıqla istifadə edə bilərsiniz.

Müxtəlif dillərdə sətir nümunəsi:

System.out.println("Salam, dünya! 你好! مرحبا!");

Sətirlərdə Unicode simvolları

Dəstəklənən kodlaşdırma çərçivəsində istənilən simvolu birbaşa yaza və ya \uXXXX qaçış ardıcıllığından istifadə edə bilərsiniz; burada XXXX — simvolun 4 rəqəmli onaltılıq kodudur.

System.out.println("Simvol: \u263A"); // Ekrana 😊 çıxaracaq

Kodu 65535-dən böyük olan simvollar üçün (məsələn, bir çox smayliklər) surroqat cütlərdən (UTF-16) istifadə olunur:

// 😊 simvolu (kod 1F60A) iki char ilə təmsil olunur
System.out.println("Smaylik: \uD83D\uDE0A"); // Ekrana 😊 çıxaracaq

Bu sizə nə verir?

  • İstənilən mətni saxlaya və emal edə bilərsiniz.
  • Dilləri qarışdırmaqdan və qeyri-standart simvollardan istifadə etməkdən çəkinməyin — Java Unicode-u “qutudan çıxan” dəstəkləyir.
  • Xüsusilə beynəlxalq istifadəçilərlə və qeyri-standart əlifbalarla işləyərkən vacibdir.

4. Sətirlərdə smayliklər və xüsusi simvollar

Müasir sətirlər — təkcə hərflər deyil, həm də emojilərdir! Məsələn, istifadəçiyə «gülüş» olan şən bir mesaj göndərmək istəyirsiniz.

Sətirə smaylik necə əlavə etməli?

Emojini birbaşa sətirə daxil edin:

System.out.println("Salam! 😊");

Unicode kodlarından istifadə edin: smayliklərin çoxu üçün surroqat ardıcıllıqlardan istifadə etmək olar.

System.out.println("Budur pişik: \uD83D\uDC31"); // 🐱

Smayliklər sətirdə iki simvol tuta bilər (UTF-16 səbəbilə). Buna görə bəzi əməliyyatlarda (məsələn, uzunluğu almaqda) sürprizlər mümkündür:

String s = "😊";
System.out.println(s.length()); // 1 deyil, 2 çıxaracaq!

Bu, bir Unicode code point-in Java-da iki char ilə kodlanması ilə bağlıdır. Simvollarla düzgün işləmək üçün sadə length() əvəzinə code point-lər və müvafiq metodlardan istifadə edin.

5. Gizli məqamlar və tez-tez rast gəlinən səhvlər

Səhv №1: Sətir daxilində dırnaqlardan yanlış istifadə. Daxili dırnaqları escape etməsəniz, kompilyator “elə bilir” ki, sətir bitib.

System.out.println("O dedi: "Salam!""); // Səhv!

Düzgün:

System.out.println("O dedi: \"Salam!\"");

Səhv №2: Yolda tək backslash. Java-da \ xüsusi simvollar üçün istifadə olunur (\n, \t, \f və s.). Buna görə "C:\Temp\file.txt" sətiri səhv interpretasiya olunur.

System.out.println("C:\Temp\file.txt"); // Səhv və ya gözlənilməz nəticə

Düzgün:

System.out.println("C:\\Temp\\file.txt"); // İki backslash

Səhv №3: Mətn bloklarını görməməzlikdən gəlmək. Java 15-dən başlayaraq mətn bloklarından istifadə edin — bu, çoxsətirli sətirlərlə işi sadələşdirir.

String path = """
    C:\Temp\file.txt
    """;
System.out.println(path);

Əsas qayda: həmişə xüsusi simvolları və dırnaqları escape edin. Bu, gizli xətalardan qaçmağa və saatlarla sazlama vaxtına qənaət etməyə kömək edəcək.

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION