JavaRush /Java Blog /Random-ID /Karakter yang melarikan diri

Karakter yang melarikan diri

Dipublikasikan di grup Random-ID
Halo! Pada perkuliahan sebelumnya, kita telah mengenal string yang direpresentasikan oleh kelas di Java String. Seperti yang mungkin Anda ingat, string adalah rangkaian karakter. Simbolnya bisa apa saja – huruf, angka, tanda baca, dan sebagainya. Hal utama adalah saat membuat string, seluruh urutan diapit tanda kutip:
public class Main {
   public static void main(String[] args) {
       String sasha = new String ("Меня зовут Саша, мне 20 лет!");
   }
}
Tapi apa jadinya jika kita perlu membuat string yang juga memiliki tanda kutip di dalamnya? Misalnya, kita ingin memberi tahu dunia tentang buku favorit kita:
public class Main {
   public static void main(String[] args) {
       String myFavoriteBook = new String ("Моя любимая книга - "Сумерки" Стефани Майер");
   }
}
Kompiler sepertinya tidak puas dengan sesuatu! Menurut Anda apa yang menjadi penyebab kesalahan tersebut, dan mengapa kesalahan tersebut terjadi khususnya pada tanda kutip? Faktanya adalah bahwa kompiler memahami kutipan dengan cara yang ditentukan secara ketat, yaitu membungkus string di dalamnya. Dan setiap kali dia melihat sebuah karakter ", dia berharap karakter yang sama akan mengikutinya, dan di antara mereka akan ada teks dari baris yang harus dia, sebagai kompiler, buat. Dalam kasus kami, tanda kutip di sekitar kata "Twilight" berada di dalam tanda kutip lainnya . Dan ketika kompiler sampai pada bagian teks ini, ia tidak mengerti apa yang mereka inginkan darinya. Sepertinya ada kutipan yang artinya harus membuat string. Tapi dia sudah melakukannya! Inilah alasannya. Sederhananya, pada titik ini kompiler salah memahami apa yang mereka inginkan darinya. "Kutipan lain? Apakah ini semacam kesalahan? Saya sudah membuat string! Atau haruskah saya membuat yang lain? Uhhh...:/" Kita perlu menjelaskan kepada kompiler ketika kutipan adalah perintah untuk itu ("" buat string!"), dan bila berupa simbol sederhana (“tampilkan kata “Twilight” beserta tanda kutip!”). Untuk mencapai hal ini, Java menggunakan pelolosan karakter . Ini dilakukan dengan menggunakan karakter khusus. Seperti ini: \. Dalam kehidupan biasa disebut "backslash", tetapi di Java (dikombinasikan dengan karakter yang akan di-escape) disebut escape sequence . Misalnya, \"ini dia - urutan kontrol untuk menampilkan kutipan di layar. Setelah menemukan konstruksi seperti itu di dalam kode Anda, kompiler akan memahami bahwa ini hanyalah karakter "kutipan" yang perlu ditampilkan di layar. Mari kita coba mengubah kode kita dengan buku:
public static void main(String[] args) {
       String myFavoriteBook = new String ("Моя любимая книга - \"Сумерки\" Стефани Майер");
       System.out.println(myFavoriteBook);
   }
}
Kita lolos dari dua tanda kutip "dalam" dengan \. Mari kita coba jalankan metodenya main()... Output konsol:

Моя любимая книга - "Сумерки" Стефани Майер
Hebat, kodenya berfungsi persis seperti yang dibutuhkan! Kutipan bukanlah satu-satunya kasus di mana kita mungkin memerlukan pelepasan karakter. Misalnya, kami ingin memberi tahu seseorang tentang pekerjaan kami:
public class Main {
   public static void main(String[] args) {
       String workFiles= new String ("Мои рабочие файлы лежат в папке D:\Work Projects\java");
       System.out.println(workFiles);
   }
}
Dan sekali lagi sebuah kesalahan! Sudah bisa menebak apa alasannya? Kompiler lagi-lagi tidak mengerti apa yang harus dilakukan. Bagaimanapun, simbol \baginya tidak lebih dari rangkaian kendali ! Diharapkan setelah garis miring akan ada beberapa karakter yang harus diinterpretasikan dengan cara khusus (misalnya, tanda kutip). Namun, di sini \surat-surat biasa menyusul. Jadi compilernya bingung lagi. Apa yang harus dilakukan? Sama persis dengan yang terakhir kali: tambahkan \satu lagi ke milik kami \!
public class Main {

   public static void main(String[] args) {

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

   }
}
Mari kita lihat hasilnya: Output konsol:

Мои рабочие файлы лежат в папке D:\Work Projects\java
Super! Kompiler langsung menentukan bahwa ini \adalah simbol biasa yang perlu dikeluarkan ke konsol bersama dengan simbol lainnya. Ada beberapa escape sequence di Java. Berikut daftar lengkapnya:
  • \t karakter tab.
  • \b karakter kembali dalam teks satu langkah mundur atau menghapus satu karakter dalam satu baris (backspace).
  • \n karakter baris baru.
  • \r karakter pengangkutan kembali.
  • \f halaman dijalankan.
  • \' karakter kutipan tunggal.
  • \" karakter kutipan ganda.
  • \\karakter garis miring terbalik (\).
Jadi, jika kompiler menemukan simbol dalam teks \n, ia akan memahami bahwa ini bukan hanya simbol dan huruf yang perlu dikeluarkan ke konsol, tetapi perintah khusus untuk itu - “buat jeda baris!” Misalnya, ini mungkin berguna bagi kita jika kita ingin mengeluarkan sepotong puisi ke konsol:
public class Main {
   public static void main(String[] args) {
       String borodino = new String ("Скажи-ка, дядя, \nВедь не даром \nМосква, спаленная пожаром, \nФранцузу отдана?");
       System.out.println(borodino);
   }
}
Dan inilah yang kami dapatkan: Output konsol:

Скажи-ка, дядя, 
Ведь не даром 
Москва, спаленная пожаром, 
Французу отдана?
Persis apa yang dibutuhkan! Kompiler mengenali urutan escape dan mengeluarkan sepotong ayat dalam 4 baris.

Unikode

Topik penting lainnya yang perlu Anda ketahui sehubungan dengan pelolosan karakter adalah Unicode . Unicode adalah standar pengkodean karakter yang mencakup karakter dari hampir semua bahasa tertulis di dunia. Dengan kata lain, ini adalah daftar kode khusus, yang di dalamnya terdapat kode untuk hampir semua karakter dari bahasa apa pun! Tentu saja, daftar ini sangat panjang dan tidak ada yang hafal :) Jika Anda tertarik dari mana asalnya dan mengapa diperlukan, bacalah artikel informatif di Habrahabr . Semua kode karakter di Unicode adalah “huruf u+ digit heksadesimal”. Misalnya, simbol hak cipta yang terkenal ditunjukkan dengan kode u00A9 . Jadi, jika Anda perlu menggunakan karakter ini saat bekerja dengan teks di Java, Anda dapat menghindarinya di teks Anda! Misalnya, kami ingin memberi tahu semua orang bahwa ceramah ini merupakan hak cipta JavaRush:
public class Main {
   public static void main(String[] args) {
       System.out.println("Лекция \"Экранирование символов\", \u00A9 2018 Javarush");
   }
}
Keluaran konsol:

Лекция "Экранирование символов", © 2018 Javarush
Hebat, semuanya berhasil! Namun karakter khusus bukanlah segalanya! Menggunakan Unicode dan pelolosan karakter, Anda dapat menyandikan teks yang ditulis dalam berbagai bahasa secara bersamaan. Dan bahkan dalam beberapa dialek berbeda dari bahasa yang sama!
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");
   }
}
Keluaran konsol:

Ма́о Цзэду́н (кит. трад. 毛澤東, упр. 毛泽东, пиньинь: Máo Zédōng) — китайский государственный и политический деятель XX века, главный теоретик маоизма.
Dalam contoh ini, dengan mengetahui kode karakter, kami menulis string yang terdiri dari alfabet Sirilik dan tiga (!) jenis penulisan karakter Cina yang berbeda - klasik, sederhana, dan Latin (pinyin). Pada dasarnya itu saja! Sekarang Anda cukup tahu tentang pelolosan karakter untuk menggunakan alat ini dalam pekerjaan Anda :) Jika semuanya belum sepenuhnya jelas, saya menyarankan Anda untuk membaca artikel ini : ini akan menjadi tambahan yang bagus.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION