JavaRush /Java blogi /Random-UZ /Qochish qahramonlari

Qochish qahramonlari

Guruhda nashr etilgan
Salom! Oldingi ma'ruzalarda biz Java-da sinf tomonidan ifodalanadigan stringlar bilan allaqachon tanishgan edik String. Esingizda bo'lsa kerak, satr - bu belgilar ketma-ketligi. Belgilar har qanday bo'lishi mumkin - harflar, raqamlar, tinish belgilari va boshqalar. Asosiysi, satr yaratishda butun ketma-ketlik tirnoq ichiga olinadi:
public class Main {
   public static void main(String[] args) {
       String sasha = new String ("Меня зовут Саша, мне 20 лет!");
   }
}
Ammo ichida tirnoqlari bo'lgan satr yaratish kerak bo'lsa nima bo'ladi? Masalan, biz dunyoga sevimli kitobimiz haqida gapirib bermoqchimiz:
public class Main {
   public static void main(String[] args) {
       String myFavoriteBook = new String ("Моя любимая книга - "Сумерки" Стефани Майер");
   }
}
Kompilyator biror narsadan norozi bo'lib tuyuladi! Sizningcha, xatoning sababi nima bo'lishi mumkin va nima uchun bu tirnoq bilan aniqlangan? Gap shundaki, kompilyator qo'shtirnoqlarni qat'iy belgilangan tarzda qabul qiladi, ya'ni ular qatorni o'radi. Va har safar u personajni ko'rganida ", u xuddi shu belgi unga ergashishini kutadi va ular orasida o'zi, tuzuvchi yaratishi kerak bo'lgan satr matni bo'ladi. Bizning holatda, "Alacakaranlık" so'zi atrofida qo'shtirnoq boshqa tirnoq belgilari ichida joylashgan . Va kompilyator ushbu matn qismiga kelganda, u undan nimani xohlashini tushunmaydi. Kotirovka borga o'xshaydi, demak u satr yaratishi kerak. Ammo u buni allaqachon qilyapti! Aynan shu sabab. Oddiy qilib aytganda, bu vaqtda kompilyator undan nimani xohlashini noto'g'ri tushunadi. "Yana bir iqtibos? Bu qandaydir xatomi? Men allaqachon satr yaratyapman! Yoki boshqasini yaratishim kerakmi? Uhhh...:/" Biz kompilyatorga qachon iqtibos buning uchun buyruq ekanligini tushuntirishimiz kerak (" satr yarating!"), va u oddiy belgi bo'lsa ("Twilight" so'zini tirnoq bilan birga ko'rsating!"). Bunga erishish uchun Java belgilardan qochish dan foydalanadi . Bu maxsus belgi yordamida amalga oshiriladi. Shunga o'xshash: \. Oddiy hayotda u "teskari qiyshiq chiziq" deb ataladi, ammo Java-da u (qochib olinadigan belgi bilan birgalikda) qochish ketma-ketligi deb ataladi . Misol uchun, \"bu erda - ekranda tirnoqlarni ko'rsatish uchun boshqaruv ketma-ketligi. Sizning kodingiz ichida bunday konstruktsiyaga duch kelgan holda, kompilyator bu shunchaki ekranda ko'rsatilishi kerak bo'lgan "iqtibos" belgisi ekanligini tushunadi. Keling, kitob bilan kodimizni o'zgartirishga harakat qilaylik:
public static void main(String[] args) {
       String myFavoriteBook = new String ("Моя любимая книга - \"Сумерки\" Стефани Майер");
       System.out.println(myFavoriteBook);
   }
}
Biz ikkita "ichki" tirnoqdan qochib qutuldik \. Keling, usulni ishga tushirishga harakat qilaylik main()... Konsol chiqishi:

Моя любимая книга - "Сумерки" Стефани Майер
Ajoyib, kod kerakli darajada ishladi! Iqtiboslar xarakterdan qochishimiz kerak bo'lgan yagona holatdan uzoqdir. Masalan, biz kimgadir ishimiz haqida aytib bermoqchi edik:
public class Main {
   public static void main(String[] args) {
       String workFiles= new String ("Мои рабочие файлы лежат в папке D:\Work Projects\java");
       System.out.println(workFiles);
   }
}
Va yana xato! Buning sababi nima ekanligini allaqachon taxmin qila olasizmi? Kompilyator yana nima qilish kerakligini tushunmaydi. Axir, uning uchun ramz boshqaruv ketma-ketligidan\ boshqa narsa emas ! U qiyshiq chiziqdan keyin qandaydir maxsus tarzda izohlashi kerak bo'lgan belgi paydo bo'lishini kutadi (masalan, tirnoq belgisi). Biroq, bu erda oddiy harflar kuzatiladi. Shunday qilib, kompilyator yana chalkashib ketdi. Nima qilish kerak? Aynan o'tgan safargidek: biznikiga yana bittasini qo'shing ! \\\
public class Main {

   public static void main(String[] args) {

       String workFiles= new String ("Мои рабочие файлы лежат в папке D:\\Work Projects\\java");
       System.out.println(workFiles);

   }
}
Keling, bundan nima chiqishini ko'rib chiqaylik: Konsol chiqishi:

Мои рабочие файлы лежат в папке D:\Work Projects\java
Super! Kompilyator bir zumda bular \qolganlari bilan birga konsolga chiqarilishi kerak bo'lgan oddiy belgilar ekanligini aniqladi. Java-da bir nechta qochish ketma-ketligi mavjud. Mana ularning to'liq ro'yxati:
  • \t yorliq belgisi.
  • \b matndagi qaytish belgisi bir qadam orqaga yoki satrdagi bitta belgini o'chirish (backspace).
  • \n yangi qator belgisi.
  • \r karetaning qaytish belgisi.
  • \f sahifani ishga tushirish.
  • \' bitta tirnoq belgisi.
  • \" ikki tirnoq belgisi.
  • \\teskari chiziq belgisi (\).
Shunday qilib, agar kompilyator matnda belgiga duch kelsa \n, u konsolga chiqishi kerak bo'lgan shunchaki belgi va harf emas, balki buning uchun maxsus buyruq - "satrni uzish!" Misol uchun, agar biz she'rning bir qismini konsolga chiqarmoqchi bo'lsak, bu biz uchun foydali bo'lishi mumkin:
public class Main {
   public static void main(String[] args) {
       String borodino = new String ("Скажи-ка, дядя, \nВедь не даром \nМосква, спаленная пожаром, \nФранцузу отдана?");
       System.out.println(borodino);
   }
}
Va bizda shunday narsa bor: Konsol chiqishi:

Скажи-ка, дядя, 
Ведь не даром 
Москва, спаленная пожаром, 
Французу отдана?
Aynan nima kerak! Kompilyator qochish ketma-ketligini tan oldi va 4 satrda oyat bo'lagini chiqardi.

Unicode

Belgilardan qochish bilan bog'liq yana bir muhim mavzu - bu Unicode . Unicode - bu dunyoning deyarli barcha yozma tillaridagi belgilarni o'z ichiga olgan belgilar kodlash standarti. Boshqacha qilib aytganda, bu maxsus kodlar ro'yxati bo'lib, unda har qanday tildan deyarli har qanday belgilar uchun kod mavjud! Tabiiyki, bu ro'yxat juda katta va hech kim uni yoddan o'rganmaydi :) Agar u qaerdan kelgani va nima uchun kerakligi bilan qiziqsangiz, Habrahabr haqidagi ma'lumotli maqolani o'qing . Unicode-dagi barcha belgilar kodlari "harf u+ o'n oltilik raqam" dir. Misol uchun, mashhur mualliflik huquqi belgisi kod bilan ko'rsatilgan u00A9 . Shunday qilib, agar Java-da matn bilan ishlashda ushbu belgidan foydalanish kerak bo'lsa, siz matningizda undan qochishingiz mumkin! Masalan, biz barchaga ushbu ma'ruzaning mualliflik huquqi JavaRush tomonidan himoyalanganligini bildirmoqchimiz:
public class Main {
   public static void main(String[] args) {
       System.out.println("Лекция \"Экранирование символов\", \u00A9 2018 Javarush");
   }
}
Konsol chiqishi:

Лекция "Экранирование символов", © 2018 Javarush
Ajoyib, hamma narsa chiqdi! Lekin maxsus belgilar hammasi emas! Unicode va belgilardan qochish yordamida siz bir vaqtning o'zida turli tillarda yozilgan matnni kodlashingiz mumkin. Va hatto bir xil tilning bir nechta turli dialektlarida!
public class Main {
   public static void main(String[] args) {

       System.out.println("\u041c\u0430\u0301\u043e " +
               "\u0426\u0437\u044d\u0434\u0443\u0301\u043d " +
               "\u0028\u043a\u0438\u0442\u002e \u0442\u0440\u0430\u0434\u002e " +
               "\u6bdb\u6fa4\u6771\u002c \u0443\u043f\u0440\u002e " +
               "\u6bdb\u6cfd\u4e1c\u002c \u043f\u0438\u043d\u044c\u0438\u043d\u044c\u003a " +
               "\u004d\u00e1\u006f \u005a\u00e9\u0064\u014d\u006e\u0067\u0029 " +
               "\u2014 \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u0439 " +
               "\u0433\u043e\u0441\u0443\u0434\u0430\u0440\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 " +
               "\u0438 \u043f\u043e\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 " +
               "\u0434\u0435\u044f\u0442\u0435\u043b\u044c \u0058\u0058 \u0432\u0435\u043a\u0430\u002c " +
               "\u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u043a " +
               "\u043c\u0430\u043e\u0438\u0437\u043c\u0430\u002e");
   }
}
Konsol chiqishi:

Ма́о Цзэду́н (кит. трад. 毛澤東, упр. 毛泽东, пиньинь: Máo Zédōng) — китайский государственный и политический деятель XX века, главный теоретик маоизма.
Ushbu misolda, belgilar kodlarini bilib, biz kirill alifbosi va uchta (!) turli xil yozish xitoycha belgilar - klassik, soddalashtirilgan va lotin (pinyin) dan iborat qatorni yozdik. Bu, asosan, shunday! Endi siz o'zingizning ishingizda ushbu vositadan foydalanish uchun xarakterdan qochish haqida etarli darajada bilasiz :) Agar hamma narsa to'liq aniq bo'lmasa, men sizga ushbu maqolani o'qishni maslahat beraman : bu yaxshi qo'shimcha bo'ladi.
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION