JavaRush /Java блогу /Random-KY /Качкан каармандар

Качкан каармандар

Группада жарыяланган
Салам! Мурунку лекцияларда биз Java тorндеги класс тарабынан берилген саптар менен таанышып калганбыз String. Эсиңизде болсо керек, сап бул символдордун ырааттуулугу. Символдор ар кандай болушу мүмкүн - тамгалар, сандар, тыныш белгилери жана башкалар. Эң негизгиси, сап түзүүдө бардык ырааттуулук тырмакчага алынат:
public class Main {
   public static void main(String[] args) {
       String sasha = new String ("Меня зовут Саша, мне 20 лет!");
   }
}
Бирок ичинде тырмакчалары бар сап түзүш керек болсо, эмне болот? Мисалы, биз дүйнөгө сүйүктүү китебибиз жөнүндө айткыбыз келет:
public class Main {
   public static void main(String[] args) {
       String myFavoriteBook = new String ("Моя любимая книга - "Сумерки" Стефани Майер");
   }
}
Компилятор бир нерсеге нааразы окшойт! Ката эмнеден улам болушу мүмкүн деп ойлойсуз жана эмне үчүн ал атайын тырмакчалар менен пайда болду? Чындыгында, компилятор цитаталарды так аныкталган жол менен кабыл алат, тактап айтканда, ал аларга сапты ороп алат. Жана ар бир каарманды көргөн сайын "ал ошол эле каармандын артынан келерин күтөт жана алардын ортосунда ал түзүүчү түзүүгө тийиш болгон саптын тексти болот. Биздин учурда, "Күүгүм" сөзүнүн тегерегиндеги тырмакчалар башка тырмакчалардын ичинде . Ал эми компилятор бул текстке келгенде, алар андан эмнени каалап жатканын түшүнбөйт. Бул цитата бар окшойт, демек ал сап түзүшү керек. Бирок ал буга чейин эле жасап жатат! Бул так себеби болуп саналат. Жөнөкөй сөз менен айтканда, бул учурда компилятор андан эмнени каалап жатканын туура эмес түшүнөт. "Дагы бир цитата? Бул кандайдыр бир катабы? Мен мурунтан эле сап түзүп жатам! Же башкасын түзүшүм керекпи? Уххх...:/" Цитата ал үчүн буйрук болгондо компиляторго түшүндүрүп беришибиз керек (" сап түзүңүз!"), ал эми жөнөкөй символ болгондо («Күүгүм» сөзүн тырмакча менен бирге көрсөтүңүз!»). Буга жетүү үчүн Java символдон качууну колдонот . Бул атайын белгини колдонуу менен жүзөгө ашырылат. Бул сыяктуу: \. Жөнөкөй жашоодо ал "арткы кыйгач сызык" деп аталат, ал эми Java тorнде (качылышы керек болгон белги менен айкалышта) качуу ырааттуулугу деп аталат . Мисалы, \"бул жерде - экранда тырмакчаларды көрсөтүү үчүн башкаруу ырааттуулугу. Кодуңуздун ичинде ушундай конструкцияга туш болгондо, компилятор бул жөн гана экранда көрсөтүлүшү керек болгон "цитата" белгиси экенин түшүнөт. Келгиле, китеп менен codeубузду өзгөртүүгө аракет кылалы:
public static void main(String[] args) {
       String myFavoriteBook = new String ("Моя любимая книга - \"Сумерки\" Стефани Майер");
       System.out.println(myFavoriteBook);
   }
}
Биз эки "ички" цитатадан \. Келгиле, ыкманы иштетип көрөлү main()... Консолдун натыйжасы:

Моя любимая книга - "Сумерки" Стефани Майер
Абдан жакшы, code так керектүүдөй иштеди! Цитаталар каармандардан качуу керек болгон жалгыз учурдан алыс. Мисалы, биз кимдир бирөөгө ишибиз жөнүндө айткыбыз келди:
public class Main {
   public static void main(String[] args) {
       String workFiles= new String ("Мои рабочие файлы лежат в папке D:\Work Projects\java");
       System.out.println(workFiles);
   }
}
Жана дагы бир ката! Мунун себеби эмнеде экенин биле аласызбы? Компилятор дагы эмне кыларын түшүнбөй жатат. Анткени, ал үчүн символ башкаруу ырааттуулугунан\ башка эч нерсе эмес ! Ал сызыктан кийин кандайдыр бир өзгөчө жол менен чечмелөө керек болгон белги болушу керек деп күтөт (мисалы, тырмакча). Бирок, бул жерде кадимки тамгалар ээрчишет. Ошентип, компилятор кайрадан чаташты. Эмне кылуу керек? Акыркы жолу дал ошондой: жөн гана биздикиге дагы бирөөнү кошуңуз ! \\\
public class Main {

   public static void main(String[] args) {

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

   }
}
Келгиле, мындан эмне чыгаарын карап көрөлү: Консолдун натыйжасы:

Мои рабочие файлы лежат в папке D:\Work Projects\java
Супер! Компилятор булар \кадимки символдор экенин, калгандары менен бирге консолго чыгарылышы керек экенин дароо аныктады. Javaда бир нече качуу ырааттуулугу бар. Бул жерде алардын толук тизмеси:
  • \t өтмөк белгиси.
  • \b текстте бир кадам артка кайтуу же саптагы бир символду жок кылуу (backspace).
  • \n жаңы сап белгиси.
  • \r каретка кайтаруу мүнөзү.
  • \f бетти иштетүү.
  • \' жалгыз цитата белгиси.
  • \" кош тырмакча белгиси.
  • \\тескери сызык белгиси (\).
Ошентип, эгерде компилятор текстте символду жолуктурса \n, бул консолго чыгышы керек болгон жөн гана символ жана тамга эмес, ал үчүн атайын буйрук - "сапты үзүү!" Мисалы, консолго ырдын бир бөлүгүн чыгаргыбыз келсе, бул бизге пайдалуу болушу мүмкүн:
public class Main {
   public static void main(String[] args) {
       String borodino = new String ("Скажи-ка, дядя, \nВедь не даром \nМосква, спаленная пожаром, \nФранцузу отдана?");
       System.out.println(borodino);
   }
}
Жана бул биз алган нерсе: Консолдун натыйжасы:

Скажи-ка, дядя, 
Ведь не даром 
Москва, спаленная пожаром, 
Французу отдана?
Дал эмне керек! Компилятор качуу ырааттуулугун таанып, 4 саптан турган аяттын бир бөлүгүн чыгарды.

Юниcode

Белгилерден качууга байланыштуу сиз бorшиңиз керек болгон дагы бир маанилүү тема - Юниcode . Юниcode – дүйнөнүн дээрлик бардык жазма тилдериндеги белгилерди камтыган символдорду codeдоо стандарты. Башкача айтканда, бул атайын codeдордун тизмеси, анда каалаган тилден дээрлик бардык белгилердин codeу бар! Албетте, бул тизме абдан чоң жана аны эч ким жатка үйрөнбөйт :) Эгер анын кайдан келгендигине жана эмне үчүн керек болгонуна кызыксаңыз, Хабрахабрдагы маалыматтык макаланы окуңуз . Юниcodeдогу бардык белги codeдору "тамга u+ он алтылык цифра". Мисалы, белгилүү автордук укук белгиси u00A9 codeу менен көрсөтүлгөн . Демек, эгер сизге Java тorндеги текст менен иштөөдө бул символду колдонуу керек болсо, анда сиз аны текстиңизден качсаңыз болот! Мисалы, биз бардыгына бул лекциянын автордук укугу JavaRush тарабынан корголгондугун билдиргибиз келет:
public class Main {
   public static void main(String[] args) {
       System.out.println("Лекция \"Экранирование символов\", \u00A9 2018 Javarush");
   }
}
Консолдук чыгаруу:

Лекция "Экранирование символов", © 2018 Javarush
Сонун, баары ойдогудай болду! Бирок өзгөчө каармандар баары эмес! Юниcodeду жана символдон качууну колдонуу менен сиз бир эле учурда ар кандай тилдерде жазылган текстти codeдой аласыз. Ал тургай, бир тилдин бир нече ар кандай диалектилерде!
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");
   }
}
Консолдук чыгаруу:

Ма́о Цзэду́н (кит. трад. 毛澤東, упр. 毛泽东, пиньинь: Máo Zédōng) — китайский государственный и политический деятель XX века, главный теоретик маоизма.
Бул мисалда символдордун codeдорун бorп, биз кириллица алфавитинен жана кытай тамгаларын жазуунун үч (!) ар кандай түрлөрүнөн турган сапты жаздык - классикалык, жөнөкөйлөштүрүлгөн жана латын (пининь). Негизинен ушундай! Эми сиз бул куралды өзүңүздүн ишиңизде колдонуу үчүн каармандын качышы жөнүндө жетиштүү билесиз :) Эгерде баары так эмес болсо, мен сизге бул макаланы окууну сунуштайм : бул жакшы кошумча болот.
Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION