Cuplikan kuliah dengan seorang mentor sebagai bagian dari kursus Codegym University. Mendaftar untuk kursus penuh.


"Salam, Amigo. Sekali waktu, Anda mengetahui bahwa untuk menulis serangkaian karakter dalam kode, Anda perlu membungkusnya dengan tanda kutip ganda."

"Ya, dan itu memberi kita string literal . Belum lama ini saya mengetahui tentang ini."

"Dalam profesi kita, itu sudah lama sekali. Tapi bukan itu intinya sekarang. Sebagai gantinya, tolong beri tahu saya apa yang harus dilakukan jika kita membutuhkan tanda kutip di dalam string literal?"

"Hmm... Sebuah string berisi tanda kutip — apa yang lebih mudah. ​​Aku yakin ada cara..."

"Ya. Katakanlah kita ingin menampilkan teks "Friends" was nominated for an "Oscar". Bagaimana kita melakukannya?"

"Sejujurnya, saya tidak tahu. Saya tidak bisa memikirkan apa pun."

"Kamu tidak akan bisa mendapatkan solusi melalui logika. Izinkan saya menunjukkan apa yang harus kamu lakukan.

Kode Catatan
String s = ""Friends" was nominated for an "Oscar"";
Opsi ini tidak akan berfungsi!"

"Opsi ini tidak akan berfungsi, karena kompiler menginterpretasikan ini sebagai kode yang sama sekali berbeda:

Kode Catatan
String s = ""Friends" was nominated for an "Oscar"";
Opsi ini tidak akan berfungsi!"

"Setelah kompiler menemukan tanda kutip ganda dalam kode, ia memperlakukan apa yang mengikutinya sebagai awal dari literal string. Tanda kutip ganda berikutnya menunjukkan akhir dari literal string."

"Jadi, bagaimana Anda menulis tanda kutip ganda di dalam literal?"

"Ada caranya. Namanya karakter pelolosan . Kamu tinggal tulis tanda kutip di dalam string teks. Dan sebelum tanda kutip, kamu tambahkan simbol \ ( backslash ).

"Seperti inilah string literal jika ditulis dengan benar:

Kode Catatan
String s = "\"Friends\" was nominated for an \"Oscar\"";
Ini akan berhasil!

"Kompiler akan menginterpretasikan semuanya dengan benar dan tidak akan menganggap tanda kutip setelah garis miring terbalik sebagai tanda kutip normal.

"Terlebih lagi, jika Anda mengeluarkan string ini ke layar, tanda kutip dengan garis miring terbalik akan diproses dengan benar, dan teks akan ditampilkan tanpa garis miring terbalik:"Friends" was nominated for an "Oscar"

"Yah, aku tidak akan mengatakan bahwa ini sangat nyaman..."

"Tapi apa yang bisa Anda lakukan, itu adalah aturannya. Poin penting lainnya. Tanda kutip yang didahului oleh garis miring terbalik mewakili satu karakter: kami hanya menggunakan notasi apik yang tidak mengganggu kemampuan kompiler untuk mengenali string literal di kami kode Anda dapat menetapkan tanda kutip ke charvariabel:

Kode Catatan
char c = '\"';
\"adalah satu karakter, bukan dua
char c = '"';
Ini juga mungkin: tanda kutip ganda di dalam tanda kutip tunggal

Situasi umum yang terjadi saat melarikan diri dari karakter

"Selain tanda kutip ganda, ada banyak karakter lain yang ditangani oleh kompiler dengan cara khusus. Misalnya, jeda baris.

"Bagaimana kita menambahkan jeda baris ke literal? Ada juga kombinasi khusus untuk ini:

\n
Karakter jeda baris

"Jika Anda perlu menambahkan jeda baris ke string literal, Anda cukup menambahkan beberapa karakter" \n.

Contoh:

Kode Keluaran konsol
System.out.println("Best regards, \n Anonymous");
Best regards,
Anonymous

“Total ada 8 kombinasi spesial seperti ini, yang juga disebut escape sequence . Ini dia:

Kode Keterangan
\t Sisipkan karakter tab
\b Sisipkan karakter backspace
\n Sisipkan karakter baris baru
\r Masukkan karakter carriage return
\f Sisipkan karakter feed halaman
\' Sisipkan tanda kutip tunggal
\" Sisipkan tanda kutip ganda
\\ Sisipkan garis miring terbalik

"Kamu sudah menunjukkan padaku dua dari mereka. Apa arti 6 lainnya?"

"Aku akan menjelaskan semuanya sekarang.

\tadalah karakter tab

Saat teks ini muncul dalam teks, itu sama dengan menekan Tabtombol saat mengetik. Ini menggeser teks yang mengikutinya dan memungkinkan untuk menyelaraskan teks.

Contoh:

Kode Keluaran 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

\bberarti 'kembali satu karakter'

Urutan dalam string ini setara dengan menekan Backspacetombol pada keyboard. Ini menghilangkan karakter yang mendahuluinya:

Kode Keluaran konsol
System.out.println("Hello\b\b World");
Hel World

\radalah karakter carriage return

Karakter ini memindahkan kursor ke awal baris saat ini tanpa mengubah teks (bergantung pada versi JDK). Apa pun selanjutnya yang ditampilkan selanjutnya akan menimpa string yang ada.

Contoh:

Kode Keluaran konsol
System.out.println("Greetings\r World!");
World!ngs

\fadalah karakter feed halaman

Simbol ini diturunkan kepada kita sejak zaman printer dot matrix pertama. Mengeluarkan urutan ini ke printer akan menyebabkan printer hanya mengumpankan lembar saat ini, tanpa mencetak teks apa pun, hingga halaman baru dimulai.

Sekarang kita akan menyebutnya page break atau new page .

\\adalah garis miring terbalik

Semuanya mudah di sini. Jika kita menggunakan garis miring terbalik untuk melepaskan karakter dalam teks kita, lalu bagaimana kita menulis karakter garis miring terbalik itu sendiri dalam string?

Sederhana saja: tambahkan garis miring terbalik ke teks — Anda harus menulis dua baris berturut-turut.

Contoh:

Kode Keluaran konsol
System.out.println("c:\projects\my\first");
Kompiler akan meneriaki Anda karena karakter yang lolos tidak dikenal.
System.out.println("c:\\projects\\my\\first");
Begitulah cara melakukannya dengan benar!

"Menggunakan tebasan ganda memang masuk akal. Tapi aku belum bisa mengingat semuanya dengan segera. Aku harus mengandalkan petunjukmu."

"Secara bertahap, Anda akan mengingat apa yang Anda butuhkan. Jangan khawatir. Dan untuk yang lainnya, ada Google.

Pengkodean Unicode

"Anda sudah tahu bahwa setiap karakter yang ditampilkan di layar sesuai dengan kode numerik tertentu. Serangkaian standar kode ini disebut pengkodean .

"Dahulu kala, ketika komputer baru ditemukan, tujuh bit (kurang dari satu byte) sudah cukup untuk menyandikan setiap karakter. Pengkodean pertama hanya berisi 128 karakter. Pengkodean ini disebut ASCII . "

"Itu nama yang aneh."

"Tidak ada yang aneh. Itu singkatan. ASCII adalah singkatan dari American Standard Code for Information Interchange — tabel kode standar Amerika untuk karakter yang dapat dicetak dan beberapa kode khusus."

"Ini terdiri dari 33 karakter kontrol yang tidak dapat dicetak (yang mempengaruhi bagaimana teks dan spasi diproses) dan 95 karakter yang dapat dicetak, termasuk angka, huruf Latin huruf besar dan kecil, dan beberapa tanda baca.

"Ketika komputer semakin populer, setiap negara mulai merilis pengkodeannya sendiri. Biasanya, mereka menggunakan ASCII sebagai titik awal dan mengganti karakter ASCII yang jarang digunakan dengan simbol dari alfabet masing-masing.

"Seiring waktu, sebuah ide muncul: buat satu pengkodean yang berisi semua karakter dari setiap pengkodean di dunia.

Pengkodean Unicode

Jadi, pada tahun 1993, pengkodean Unicode dibuat, dan bahasa Java menjadi bahasa pemrograman pertama yang menggunakan pengkodean ini sebagai standar untuk menyimpan teks. Sekarang Unicode adalah standar untuk seluruh industri TI.

"Meskipun Unicode sendiri adalah standarnya, ia memiliki beberapa representasi atau format transformasi Unicode (UTF): UTF-8, UTF-16 dan UTF-32, dll.

"Java menggunakan pengkodean Unicode versi lanjutan — UTF-16: setiap karakter dikodekan dalam 16 bit (2 byte). Ini dapat menampung hingga 65.536 karakter! Anda dapat menemukan hampir setiap karakter dari setiap huruf di dunia dalam pengkodean ini. "

"Kuharap aku tidak perlu mengetahuinya dengan hati?"

"Jika kamu mau, pergilah!"

"Oke, baiklah. Saya akan menggunakan aturan ini: Anda tidak bisa mengetahui segalanya, tapi Anda bisa Google segalanya."

"Mengadopsi pendekatan rasional adalah segalanya. Jadi, untuk menulis karakter Unicode dalam program Anda menggunakan kodenya, Anda perlu menulis \u+ kode dalam heksadesimal . Misalnya,\u00A9

Kode Keluaran konsol
System.out.println("\u00A9 CodeGym");
© CodeGym

Unicode: titik kode

"640 kilobyte seharusnya cukup untuk semua orang! Atau tidak". Bill Gates pernah berkata demikian. Atau tidak. Setidaknya kutipan ini dikaitkan dengan dia."

"Haha. 640 kilobyte bahkan tidak cukup untuk memuat otak robot pembersih."

"Hidup itu sulit, dan seiring waktu, pengkodean UTF-16 mulai tidak memadai. Ternyata ada banyak bahasa Asia, dan mereka memiliki banyak mesin terbang. Dan semua mesin terbang ini tidak dapat dijejalkan menjadi 2 byte ."

"Jadi apa yang kita lakukan?"

"Gunakan lebih banyak byte ! Tapi tipe char hanya 2 byte dan mengubahnya menjadi 4 tidaklah mudah: miliaran baris kode Java telah ditulis di seluruh dunia, yang akan rusak jika tipe char tiba-tiba menjadi 4 byte sebuah Java mesin Jadi kita tidak bisa mengubah tipe char!

"Ada pendekatan lain. Ingat bagaimana kita menghindari karakter dengan meletakkan garis miring terbalik di depannya. Pada dasarnya, kita menyandikan satu karakter menggunakan banyak karakter. Pembuat Java memutuskan untuk menggunakan pendekatan yang sama.

"Beberapa karakter yang muncul secara visual sebagai satu karakter dikodekan sebagai dua chars dalam sebuah string:

Kode Keluaran konsol
System.out.println("\uD83D\uDD0A");
🔊

"Sekarang program Java Anda bahkan dapat mengeluarkan emoji ke konsol 😎"

"Aku pasti akan menggunakannya untuk bersenang-senang!"