JavaRush /Kurslar /All lectures for UZ purposes /Belgilarni ekranga chiqarish

Belgilarni ekranga chiqarish

All lectures for UZ purposes
Daraja, Dars
Mavjud

1. Belgilarni ekranga chiqarish sabablarini tushuntirish

Ilgari siz bilib olgansizki, kodda belgilar qatorini yozish uchun bu belgilarni qo'shtirnoqlar ichiga olishingiz kerak: hosil bo'ladigan qism qatorli literal.

Agar bizga qo'shtirnoqlar qatorli literal ichida kerak bo'lsa, nima qilish kerak? Qo'shtirnoqli qator — bundan osonroq nima bo'lishi mumkin.

Aytaylik, biz quyidagi matnni chiqarmoqchimiz: Film "Do'stlar" "Oskar"ga nomzod qilindi. Qanday qilib buning iloji bor?

Kod Izohlar
String s = "Film "Do'stlar" "Oskar"ga nomzod qilindi";
Bu variant ishlamaydi!

Hammasi shundaki, kompilator fikriga ko'ra bu boshqa kod:

Kod Izohlar
String s = "Film "Do'stlar" "Oskar"ga nomzod qilindi";
Bu variant ishlamaydi!

Kompilator kodda qo'shtirnoqlarni uchratganda, ular qatorli literalning boshlanishi deb hisoblaydi. Keyingi qo'shtirnoqlar — qatorli literalning oxiri.

Demak, qo'shtirnoqlarni qator literal ichida qanday yozamiz?


2. Belgilarni ekranga chiqarish

Buni bajarishning bir usuli bor va unga hatto nom ham berildi — belgilarni ekranga chiqarish. Siz shunchaki matn ichiga qo'shtirnoqlarni yozasiz va qo'shtirnoqlar oldiga \ (yoki bekslash yoki backslash) qo'yasiz.

Mana, to'g'ri yozilgan qatorli literal qanday ko'rinadi:

Kod Izohlar
String s = "Film \"Do'stlar\" "Oskar"ga nomzod qilindi";
Bu ishlaydi!

Kompilator hammasini to'g'ri tushunadi va bekslashdan keyin joylashgan qo'shtirnoqlarni oddiy qo'shtirnoqlar deb hisoblamaydi.

Ko'proq shuni tushunishingiz kerakki, agar ushbu qatorni ekranga chiqaradigan bo'lsangiz, bekslashdagi qo'shtirnoqlar to'g'ri ishlov beriladi va ekranda bekslashsiz yozuv ko'rinadi: Film "Do'stlar" "Oskar"ga nomzod qilindi

Boshqa muhim nuqta. Bekslash bilan keltirilgan qo'shtirnoqlar — bu bitta belgi: biz shunchaki kompilyatorni koddagi qatorli literalni tanib olishiga to'sqinlik qilmaslik uchun bunday hiyla-nayrangli usuldan foydalanamiz. Siz char o'zgaruvchisiga qo'shtirnoqlarni topshirishingiz mumkin:

Kod Izohlar
char c = '\"';
\" — bu bitta belgi, ikki emas
char c = '"';
shunday qilish ham mumkin: qo'shtirnoq bir tirnoq ichida

3. Belgilarni ekranga chiqarishda tez-tez uchraydigan vaziyatlar

Belgilarni ekranga chiqarishda tez-tez uchraydigan vaziyatlar

Qo'shtirnoqlar tashqari kompilator tomonidan maxsus ishlov beriladigan boshqa ko'plab belgilar mavjud. Masalan, yangi qatorni qo'shish.

Qatorli literalga yangi qator qo'shish uchun nima qilish kerak? Buning uchun ham maxsus kombinatsiya mavjud:

\n
Yangi qator belgisi

Agar siz qatorli literalga yangi qator qo'shmoqchi bo'lsangiz, siz shunchaki ikkita belgini qo'shishingiz kerak – \n.

Misol:

Kod Ekranga chiqarish
System.out.println("Hurmat bilan,\nAnonim");
             
Hurmat bilan,
Anonim

Umumiy hisobda bunday maxsus kombinatsiyalar 8 ta: ularni escape-pasportlar deb atashadi, ular:

Kod Ta'rif
\t Tab belgisini qo'shish
\b Bir belgi orqaga qaytish belgisini qo'shish
\n Yangi qator belgisini qo'shish
\r Kartrijni qaytarib olish belgisini qo'shish
\f Sahifani o'tkazish belgisini qo'shish
\' Yagona qo'shtirnoq qo'shish
\" Ikki qo'shtirnoq qo'shish
\\ Bekslash qo'shish

Ular orasidagi ikkitasini bilib oldingiz, qolgan 6 tasining ma'nosi nima?

Tab belgisi – \t

Ushbu belgilar yozuvda Tab tugmachasini bosishga teng. U o'zidan keyingi matnni biroz o'ngga siljitadi.

Misol:

Kod Ekranga chiqarish
System.out.println("0\t1\t2\t3");
System.out.println("0\t10\t20\t30");
System.out.println("0\t100\t200\t300");
0       1        2        3
0       10       20       30
0       100      200      300

Bir belgi orqaga qaytish – \b

Bu yozuvda Backspace tugmachasini bosishga teng. U o'zidan oldingi amalni bekor qiladi:

Kod Ekranga chiqarish
System.out.println("Salom\b\b Dunyoga");
Salo Dunyoga!

Kartrijni qaytarib olish – \r

Bu belgi kursorni joriy qatorning boshiga olib keladi, matnni o'zgartirmasdan. Keyingi chiqariladigan matn mavjud matnni o'chiradi.

Misol:

Kod Ekranga chiqarish
System.out.println("Salom\rDunyo!");
Dunyo!

Sahifa o'tkazish belgisi – \f

Bu belgi eski matritsali printerlardan bizgacha yetib kelgan. Agar u bosmaga qo'yilsa, printer hozirgi varaqani chiqaradi va bosma matnni chiqarishni boshlaydi.

Hozir biz uni sahifa uzilishi yoki yangi sahifa deb atagan bo'lar edik.

Bekslash – \\

Bu yerdagi hamma narsa oddiy. Agar biz matnda belgilarni ekranga chiqarish uchun bekslashdan foydalansak, unda matnli qatorga bekslash belgisini qanday qo'shish mumkin?

Hammasi oddiy: matnga bekslash belgisini qo'shish uchun uni ikki marta yozishingiz kerak.

Misol:

Kod Ekranga chiqarish
System.out.println("c:\proektlar\my\birinchi");
Kompilator noma'lum ekranga chiqarilgan belgilar haqida xatolik beradi.
System.out.println("c:\\roektlar\\my\\birinchi");
To'g'ri!


4. Unicode kodlash tizimi

Siz allaqachon bilasiz, ekranda ko'rsatiladigan har bir belgi uchun ma'lum bir raqamsal kod mavjud. Bunday kodlar standartlashtirilgan to'plamiga kodlash tizimi deyiladi.

Kompyuterlar yangi paydo bo'lganida, barcha belgilarni kodlash uchun yetarli bo'lgan yetti bitlik (yarim bayt) kodlash tizimi yaratilgan edi. U ASCII deb atalgan.

ASCII (Ingl. American Standard Code for Information Interchange) — bosma belgilar va ayrim maxsus kodlar uchun amerika standart kodlash jadvallari.

U 33 bosilmaydigan boshqaruv belgilaridan (matn va bo'shliqni ishlov berish uchun ta'sir ko'rsatadigan) va 95 bosma belgidan, jumladan raqamlar, lotin alifbosidagi kichik va katta harflardan va ayrim punktuatsion belgilarni o'z ichiga olgan.

Unicode kodlash tizimi

Umumiy kompyuterlar soni oshgani sari, har bir davlat o'z kodlash tizimini chiqara boshladi. Odatda ASCII asosini olishardi va kam ishlatiladigan belgilarni milliy alifbolar belgilariga almashtirishardi.

Vaqt o'tishi bilan bitta kodlash tizimini yaratish g'oyasi paydo bo'ldi, unda barcha dunyoviy kodlash tizimlari belgilarini joylashtirish mumkin edi.

Unicode kodlash tizimi 1

1993 yilda Unicode kodlash tizimi yaratildi va Java dasturlash tili uning matn saqlash standarti sifatida birinchi bo'lib uni ishlatdi. Hozir esa Unicode butun IT sanoatining standarti.

Va Unicode o'zi standarti bo'lsa-da, uning bir nechta taqdim etish shakllari mavjud (Unicode transformation format, UTF): UTF-8, UTF-16, UTF-32 va boshqalar.

Javada kiritilgan kodlash tizimi – UTF-16 ishlatiladi: har bir belgi 16 bit (2 bayt) bilan kodlanadi. U 65,536 belgilarni saqlashi mumkin!

Bu kodlash tizimida deyarli barcha dunyo alifbolari belgilarini topishingiz mumkin. Ammo uni yodlab olish imkonsiz: hammasini bilib bo'lmaydi, lekin hammasini qidirib topish mumkin.

Dasturning kodida Unicode kodlash tizimidagi belgini uning kodi orqali yozish uchun \u + olti o'nlik kod yozishingiz kerak. Masalan, \u00A9

Kod Ekranga chiqarish
 System.out.println("\u00A9 JavaRush");
© JavaRush


5. Unicode: codepoint

640 kilobayt hammaning ehtiyojlari uchun yetarli! Yoki yo'q. (Muallifligi Bill Geytsga tegishli bo'lgan iqtibos)

Hayot — qiyin narsa, va vaqt o'tishi bilan UTF-16 kodlash tizimi yetishmay qoldi. Aslida Osiyoda juda ko'p tillar bor ekan, va bu tillarda juda ko'p iyerogliflar mavjud. Hammasini 2 baytga sig'dirish imkonsiz bo'ldi.

Xo'sh, endi nima qilish kerak? Ko'proq baytlardan foydalanish!

Ammo char turi faqat 2 baytni egallaydi va uni 4 baytga o'zgartirish oson emas: dunyoda Java-da yozilgan milliardlab kodlar mavjud, agar to'satdan Java-moshinada char turi 4 bayt bo'lsa, ular noto'g'ri ishlaydi. Shuning uchun char turini o'zgartirish mumkin emas!

Boshqa yondashuv ham bor. Eslang, biz belgilarni bekslash prefiksi bilan kodlaganmiz. Biz, amalda, bitta belgini bir nechta belgilar bilan kodlagan edik.

Bu yondashuvni Java yaratuvchilari ham qo'llashga qaror qilishgan.

Ba'zi belgilar, ko'rinishda bitta belgi bo'lib, qator ichida ikki char bilan kodlanadi:

Kod Ekranga chiqarish
System.out.println("\uD83D\uDD0A");
🔊

Endi sizning Java dasturingiz emoji ham chiqarishi mumkin 😎


Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION