Coretan kuliah dengan mentor sebagai sebahagian daripada kursus Universiti Codegym. Daftar untuk kursus penuh.


"Salam, Amigo. Pada suatu masa dahulu, anda mengetahui bahawa untuk menulis rentetan aksara dalam kod, anda perlu membungkusnya dengan petikan berganda."

"Ya, dan itu memberi kita rentetan literal . Tidak lama dahulu saya mendapat tahu tentang perkara ini."

"Dalam profesion kami, itu sudah lama dahulu. Tetapi itu bukan perkaranya sekarang. Sebaliknya, sila beritahu saya apa yang perlu dilakukan jika kami memerlukan tanda petikan dalam rentetan literal?"

"Hmm... Rentetan yang mengandungi petikan — apa yang lebih mudah. ​​Saya pasti ada cara..."

"Ya. Katakan kita mahu memaparkan teks itu "Friends" was nominated for an "Oscar". Bagaimana kita akan melakukannya?"

"Sejujurnya, saya tidak tahu. Saya tidak boleh memikirkan apa-apa."

"Anda tidak akan dapat mendapatkan penyelesaian melalui logik. Biar saya tunjukkan apa yang perlu dilakukan.

Kod Nota
String s = ""Friends" was nominated for an "Oscar"";
Pilihan ini tidak akan berfungsi!"

"Pilihan ini tidak akan berfungsi, kerana pengkompil mentafsirkan ini sebagai kod yang sama sekali berbeza:

Kod Nota
String s = ""Friends" was nominated for an "Oscar"";
Pilihan ini tidak akan berfungsi!"

"Selepas pengkompil menemui petikan berganda dalam kod, ia menganggap perkara yang berikut sebagai permulaan literal rentetan. Tanda petikan berganda seterusnya menunjukkan penghujung literal rentetan."

"Jadi, bagaimanakah anda menulis petikan berganda di dalam literal?"

"Ada satu cara. Ia dipanggil escape characters . Anda hanya menulis tanda petikan dalam rentetan teks. Dan sebelum petikan, anda menambah simbol \ ( backslash ).

"Inilah rupa literal rentetan apabila ditulis dengan betul:

Kod Nota
String s = "\"Friends\" was nominated for an \"Oscar\"";
Ini akan berjaya!

"Penyusun akan mentafsirkan semuanya dengan betul dan tidak akan menganggap tanda petikan selepas garis serong ke belakang sebagai tanda petikan biasa.

"Apatah lagi, jika anda mengeluarkan rentetan ini ke skrin, petikan dengan garis miring ke belakang akan diproses dengan betul dan teks akan dipaparkan tanpa sebarang garis miring ke belakang:"Friends" was nominated for an "Oscar"

"Nah, saya tidak akan mengatakan bahawa ini sangat mudah..."

"Tetapi apa yang boleh anda lakukan, itu adalah peraturannya. Satu lagi perkara penting. Tanda petikan yang didahului oleh garis miring ke belakang mewakili satu aksara: kami hanya menggunakan tatatanda licin yang tidak mengganggu keupayaan pengkompil untuk mengenali literal rentetan dalam kami kod. Anda boleh menetapkan petikan kepada charpembolehubah:

Kod Nota
char c = '\"';
\"adalah satu watak, bukan dua
char c = '"';
Ini juga mungkin: tanda petikan berganda di dalam petikan tunggal

Situasi biasa yang berlaku apabila melarikan diri daripada watak

"Selain petikan berganda, terdapat banyak watak lain yang dikendalikan oleh pengkompil dengan cara yang istimewa. Contohnya, pemisah baris.

"Bagaimanakah kita menambah pemisah baris kepada literal? Terdapat juga gabungan khas untuk ini:

\n
Watak putus baris

"Jika anda perlu menambah pemisah baris pada rentetan literal, anda hanya menambah beberapa aksara" \n.

Contoh:

Kod Output konsol
System.out.println("Best regards, \n Anonymous");
             
Best regards,
Anonymous

"Terdapat sejumlah 8 kombinasi istimewa seperti ini, yang juga dipanggil jujukan melarikan diri . Berikut ialah:

Kod Penerangan
\t Sisipkan aksara tab
\b Masukkan aksara ruang belakang
\n Masukkan aksara baris baharu
\r Masukkan aksara pemulangan pengangkutan
\f Masukkan aksara suapan halaman
\' Masukkan satu tanda petikan
\" Masukkan tanda petikan berganda
\\ Masukkan garis miring ke belakang

"Anda sudah menunjukkan kepada saya dua daripada mereka. Apakah maksud 6 yang lain?"

“Saya akan jelaskan semuanya sekarang.

\tialah watak tab

Apabila teks ini muncul dalam teks, ia sama dengan menekan Tabkekunci semasa menaip. Ia mengalihkan teks yang mengikutinya dan memungkinkan untuk menjajarkan teks.

Contoh:

Kod Output konsol
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

\bbermaksud 'kembali satu watak'

Urutan dalam rentetan ini bersamaan dengan menekan Backspacekekunci pada papan kekunci. Ia mengalih keluar aksara yang mendahuluinya:

Kod Output konsol
System.out.println("Hello\b\b World");
Hel World

\rialah watak pemulangan kereta

Watak ini menggerakkan kursor ke permulaan baris semasa tanpa mengubah teks (bergantung pada versi JDK). Apa sahaja yang dipaparkan seterusnya akan menimpa rentetan yang sedia ada.

Contoh:

Kod Output konsol
System.out.println("Greetings\r World!"); 
World!ngs

\fialah watak suapan halaman

Simbol ini diturunkan kepada kita sejak zaman pencetak dot matriks pertama. Mengeluarkan jujukan ini kepada pencetak akan menyebabkan pencetak hanya menyuap keluar helaian semasa, tanpa mencetak sebarang teks, sehingga halaman baharu bermula.

Sekarang kita akan memanggilnya sebagai pemisah halaman atau halaman baharu .

\\adalah garis miring ke belakang

Semuanya mudah di sini. Jika kita menggunakan garis miring ke belakang untuk melepaskan aksara dalam teks kita, maka bagaimanakah kita menulis aksara garis miring terbalik itu sendiri dalam rentetan?

Ianya mudah: tambahkan garis miring ke belakang pada teks — anda perlu menulis dua berturut-turut.

Contoh:

Kod Output konsol
System.out.println("c:\projects\my\first");
Pengkompil akan menjerit kepada anda untuk watak yang tidak diketahui yang melarikan diri.
System.out.println("c:\\projects\\my\\first");
Itulah cara ia dilakukan dengan betul!

"Menggunakan garis miring berganda masuk akal. Tetapi saya tidak serta-merta dapat menghafal segala-galanya. Saya perlu bergantung pada petunjuk anda."

"Perlahan-lahan, anda akan ingat apa yang anda perlukan. Jangan risau. Dan untuk segala-galanya, terdapat Google.

Pengekodan Unikod

"Anda sudah tahu bahawa setiap aksara yang dipaparkan pada skrin sepadan dengan kod berangka tertentu. Set piawai bagi kod ini dipanggil pengekodan .

"Pada suatu masa dahulu, apabila komputer baru dicipta, tujuh bit (kurang daripada satu bait) sudah cukup untuk mengekod setiap aksara. Pengekodan pertama mengandungi hanya 128 aksara. Pengekodan ini dipanggil ASCII . "

"Itu nama yang pelik."

"Tiada apa-apa yang pelik mengenainya. Ia adalah singkatan. ASCII ialah singkatan kepada American Standard Code for Information Interchange — jadual kod Amerika standard untuk aksara boleh cetak dan beberapa kod khas."

"Ia terdiri daripada 33 aksara kawalan tidak boleh cetak (yang mempengaruhi cara teks dan ruang diproses) dan 95 aksara boleh cetak, termasuk nombor, huruf Latin huruf besar dan kecil serta beberapa tanda baca.

"Apabila komputer semakin popular, setiap negara mula mengeluarkan pengekodan sendiri. Biasanya, mereka mengambil ASCII sebagai titik permulaan dan menggantikan aksara ASCII yang jarang digunakan dengan simbol daripada abjad masing-masing.

"Lama kelamaan, idea muncul: buat satu pengekodan yang mengandungi semua aksara setiap pengekodan di dunia.

Pengekodan Unikod

"Oleh itu, pada tahun 1993, pengekodan Unicode telah dicipta, dan bahasa Java menjadi bahasa pengaturcaraan pertama yang menggunakan pengekodan ini sebagai standard untuk menyimpan teks. Kini Unicode adalah standard untuk keseluruhan industri IT.

"Walaupun Unicode itu sendiri adalah standard, ia mempunyai beberapa perwakilan atau format transformasi Unicode (UTF): UTF-8, UTF-16 dan UTF-32, dsb.

"Java menggunakan versi lanjutan pengekodan Unicode — UTF-16: setiap aksara dikodkan dalam 16 bit (2 bait). Ia boleh memuatkan sehingga 65,536 aksara! Anda boleh menemui hampir setiap aksara setiap abjad di dunia dalam pengekodan ini. "

"Saya harap saya tidak perlu mengetahuinya dengan hati?"

"Jika anda mahu, pergi untuk itu!"

"Baiklah, baik. Saya akan menggunakan peraturan ini: anda tidak boleh mengetahui segala-galanya, tetapi anda boleh Google segala-galanya."

"Mengguna pakai pendekatan rasional adalah segala-galanya. Jadi, untuk menulis aksara Unicode dalam program anda menggunakan kodnya, anda perlu menulis \u+ kod dalam perenambelasan . Contohnya,\u00A9

Kod Output konsol
 System.out.println("\u00A9 CodeGym");
© CodeGym

Unicode: titik kod

"640 kilobait sepatutnya cukup untuk semua orang! Atau tidak". Bill Gates pernah berkata demikian. Atau tidak. Sekurang-kurangnya petikan ini dikaitkan dengannya."

"Haha. 640 kilobait pun tidak cukup untuk memuatkan otak robot pembersih."

"Hidup adalah kasar, dan dari masa ke masa, pengekodan UTF-16 mula tidak mencukupi. Ternyata terdapat banyak bahasa Asia, dan mereka mempunyai banyak glif. Dan semua glif ini tidak boleh dijejalkan ke dalam 2 bait ."

"Jadi apa yang kita buat?"

"Gunakan lebih banyak bait ! Tetapi jenis char hanya 2 bait dan menukarnya kepada 4 tidak begitu mudah: berbilion baris kod Java telah ditulis di seluruh dunia, yang akan pecah jika jenis char tiba-tiba menjadi 4 bait Java mesin. Jadi kita tidak boleh menukar jenis char!

"Terdapat pendekatan lain. Ingat bagaimana kami melarikan diri daripada aksara dengan meletakkan garis miring ke belakang di hadapannya. Pada asasnya, kami mengekod satu aksara menggunakan berbilang aksara. Pencipta Java memutuskan untuk menggunakan pendekatan yang sama.

"Sesetengah aksara yang kelihatan secara visual sebagai satu aksara dikodkan sebagai dua chars dalam rentetan:

Kod Output konsol
System.out.println("\uD83D\uDD0A");
🔊

"Kini program Java anda juga boleh mengeluarkan emoji ke konsol 😎"

"Saya pasti akan menggunakannya untuk berseronok!"