1. Simvolların ekrana çıxarılmasının səbəbləri
Bir vaxtlar öyrənmişdiniz ki, kodda simvolları yazmaq üçün onları qoşa dırnaqlar arasına almaq lazımdır: bu, sətir literalı adlanır.
Bəs belə bir sual yaranır: əgər bizə dırnaqları sətir literalı daxilində göstərmək lazım olsa, nə edəcəyik? Dırnaq işarələrini ehtiva edən sətir - bu heç də mürəkkəb məsələ deyil.
Tutaq ki, biz Film "Dostlar" "Oskar"a namizəd oldu
mətnini ekrana çıxarmaq istəyirik. Bunu necə etmək olar?
Kod | Qeyd |
---|---|
|
Bu variant işləmir! |
Bütün məsələ ondadır ki, kompilyator burada tamamilə fərqli bir kod yazıldığını düşünür:
Kod | Qeyd |
---|---|
|
Bu variant işləmir! |
Kompilyator kodda qoşa dırnaqlarla rastlaşdıqda, onları sətir literalının başlanğıcı kimi qəbul edəcək. Növbəti qoşa dırnaqları isə sətir literalının sonu hesab edəcək.
Bəs sətir literalı daxilində qoşa dırnaqları necə yazmaq olar?
2. Simvolların ekrana çıxarılması
Bir üsul var, buna hətta ad da verilib — simvolların ekrana çıxarılması. Sadəcə mətnin içərisində dırnaq işarələrini yazırıq, amma dırnaq işarələrindən əvvəl \
(tərs xətt ya da tərs slash ya da bekslash, ing. backslash) simvolunu əlavə edirik.
Budur, düzgün yazılmış sətir literalının görünüşü:
Kod | Qeydlər |
---|---|
|
Bu işləyəcək! |
Kompilyator hər şeyi düzgün başa düşəcək və tərs xətdən sonra yerləşən dırnaq işarələrini adi dırnaq işarələri kimi qəbul etməyəcək.
Bundan başqa, əgər bu sətiri ekrana çıxarsanız, tərs xəttlə birlikdə olan dırnaq işarələri düzgün işləniləcək və ekranda belə bir yazı görünəcək: Film "Dostlar" "Oscar"-a namizəd göstərilib
Başqa bir vacib məqam. Tərs xətlə müşayiət olunan dırnaq işarələri — bu, bir simvoldur: biz sadəcə kompiləyatorun koddakı sətir literalını tanımasına mane olmamaq üçün belə "hiyləgər" bir yazı üsulundan istifadə edirik. Siz dırnaqları char
dəyişənə əlavə edə bilərsiniz:
Kod | Qeydlər |
---|---|
|
\" — bir simvoldur, iki deyil |
|
bu da olar: cəftə dırnaq tək dırnaqların içində |
3. Simvolların ekranirovu zamanı tez-tez yaranan vəziyyətlər
İkiqat dırnaq işarələrindən başqa, kompilyator tərəfindən xüsusi şəkildə işlənən bir çox başqa simvol da var. Məsələn, sətir keçidi.
Sətir keçidini literala necə əlavə etmək olar? Bunun üçün də xüsusi bir kombinasiyası var:
\n
Əgər sətir literala sətir keçidi əlavə etmək istəyirsinizsə, sadəcə \n
simvolunu əlavə edin.
Misal:
Kod | Ekranda çıxışı |
---|---|
|
|
Cəmi belə xüsusi kombinasiyadan 8 var: bunlara həm də escape-sekvensiyalar deyirlər, baxın burada:
Kod | Təsvir |
---|---|
\t |
Tabulyasiya simvolunu əlavə edir |
\b |
Bir simvol geri qayıtma simvolunu əlavə edir |
\n |
Yeni sətr simvolunu əlavə edir |
\r |
Karət sıfırlama simvolunu əlavə edir |
\f |
Səhifə keçidi simvolunu əlavə edir |
\' |
Tək dırnaq əlavə edir |
\" |
İkiqat dırnaq əlavə edir |
\\ |
Əks slash əlavə edir |
Onlardan ikisi ilə tanış oldunuz, bəs qalan 6-sı nə deməkdir?
Tabulyasiya simvolu – \t
Bu simvol mətn daxilində klaviaturada Tab
düyməsinə basmaqla eynidir. Sonrakı mətnin hizalanması üçün onu irəli çəkir.
Misal:
Kod | Ekranda çıxışı |
---|---|
|
|
Bir simvol geri qayıtma – \b
Bu simvol mətn daxilində klaviaturada Backspace
düyməsinə basmaqla eynidir. O, öncədən çıxmış son simvolu silir:
Kod | Ekranda çıxışı |
---|---|
|
|
Karət sıfırlama simvolu – \r
Bu simvol kursori mövcud sətrin əvvəlinə çəkir, mətn dəyişmədən qalır. Növbəti çıxışı mətn mövcud olanı əvəz edəcək.
Misal:
Kod | Ekranda çıxışı |
---|---|
|
|
Səhifə keçidi simvolu – \f
Bu simvol ilk matris printerlərin dövründən qalmışdır. Belə bir simvolu çap etmək üçün printer mövcud səhifəni sadəcə sürüşdürərdi, heç bir mətn yazmadan, yeni vərəqə qədər.
Bugünkü dövrdə biz buna səhifə qırılması və ya yeni səhifə deyə bilərik.
Əks slash – \\
Əks slash simvolunun ekranirovu üçün istifadə olunduğunu nəzərə alsaq, bəs özünü ekranirov etmək üçün nə edək?
Sadədir: mətnə əks slash əlavə etmək üçün onu ardıcıl iki dəfə yazmaq lazımdır.
Misal:
Kod | Ekranda çıxışı |
---|---|
|
Kompilyator naməlum ekranirovu simvollarına şikayət edəcək. |
|
Belə doğru! |
4. Unicode Kodlama
Artıq bildiyiniz kimi, ekranda göstərilən hər simvol müəyyən bir rəqəm dəyərinə uyğundur. Belə rəqəm dəyərlərinin standartlaşdırılmış toplusuna kodlama deyilir.
Çox-çox əvvəl, kompüterlər yeni yarandığı dövrdə, bütün simvolları kodlamaq üçün yeddi bit (bir baytdan kiçik) kifayət edirdi - ilk kodlama cəmi 128 simvoldan ibarət idi. Bu kodlama ASCII adlanırdı.
ASCII (ing. American Standard Code for Information Interchange) — çap edilə bilən simvollar və bəzi xüsusi kodlar üçün Amerika standart kodlama cədvəlidir.
Bu cədvəl 33 çap edilməyən idarəetmə simvolundan (mətnin və boşluqların işlənməsinə təsir göstərən) və 95 çap edilə bilən simvoldan ibarət idi, buraya rəqəmlər, kiçik və böyük hərf formasında latın əlifbasının hərfləri və bir sıra durğu işarələri daxil idi.
Kompüterlərin populyarlığının artması ilə hər bir ölkə öz kodlamasını yaratmağa başladı. Adətən, ASCII əsas götürülürdü və az istifadə olunan simvollar milli əlifbaların simvolları ilə əvəz olunurdu.
Sonradan belə bir fikir meydana gəldi: bütün dünya kodlamalarının bütün simvollarını bir yerdə cəmləşdirən bir kodlama yaratmaq.
1993-cü ildə Unicode kodlaması yaradıldı və Java dili ilk proqramlaşdırma dili oldu ki, onu mətn saxlanması standartı kimi istifadə etdi. İndi isə Unicode — bütün İT sənayesinin standartıdır.
Hərçənd Unicode özü bir standartdır, onun bir neçə təqdim formasına malikdir (Unicode transformation format, UTF): UTF-8, UTF-16, UTF-32 və s.
Java-da Unicode kodlamasının inkişaf etmiş bir növü – UTF-16 istifadə olunur: burada hər bir simvol 16 bitlə (2 bayt) kodlaşdırılır. Bu kodlama 65,536 qədər simvolu əhatə edə bilir!
Bu kodlamada dünyanın demək olar ki, bütün əlifbalarının simvollarını tapmaq mümkündür. Amma təbii ki, onu əzbər bilmək mümkün deyil: hər şeyi bilmək lazım deyil, amma hamısını googledən tapmaq olar.
Unicode kodlamasının koduna əsasən proqram kodunda simvol yazmaq üçün \u
+ kodun onaltılıq rəqəmlərini yazmaq lazımdır. Məsələn, \u00A9
Kod | Ekranda çıxış |
---|---|
|
|
5. Unicode: codepoint
640 Kilobayt hər kəsə yetər! Yoxsa yox. (Bill Gates-ə aid edilən sitat)
Həyat — sərt bir şeydir və UTF-16 kodlaşdırmaları zamanla kifayət etməməyə başladı. Məlum oldu ki, Asiyada çox sayda dil var və onların çoxlu heroqlifləri var. Və bütün heroqlifləri 2 bayta yerləşdirmək sadəcə mümkün deyil.
Bəs nə etmək olar? Daha çox bayt istifadə etmək!
Amma problem burasındadır ki, char tipi cəmi 2 bayt tutur və onu 4 bayta dəyişmək o qədər də asan deyil: dünyada milyardlarla Java-da yazılmış kod sətri var ki, əgər birdən Java-makinada char tipi 4 bayt olsa, onlar düzgün işləməyəcək. Ona görə də char tipini dəyişmək olmaz!
Başqa bir yanaşma da var. Xatırlayın, biz simvolları əyri xətt prefiksi vasitəsilə necə ekranirovasiya edirdik. Əslində, biz bir neçə simvol vasitəsilə bir simvol kodlaşdırırdıq.
Java tərtibatçıları da bu yanaşmadan istifadə etməyə qərar verdilər.
Bəzi simvollar, görsən baxanda bir simvol kimi görünsələr də, sətrdə iki char
ilə kodlanır:
Kod | Ekranda çıxış |
---|---|
|
|
İndi sizin Java proqramınız konsolda hətta emoji 😎 da göstərə bilər
GO TO FULL VERSION