1. Alasan kanggo uwal karakter

Biyen, sampeyan sinau manawa kanggo nulis senar karakter ing kode, sampeyan kudu mbungkus nganggo kuotasi kaping pindho. Asil punika string literal .

Nanging apa sing kudu ditindakake yen kita butuh tanda petik ing string literal? String sing ngemot kuotasi - apa sing luwih gampang?

Contone, kita pengin nampilake teks kasebut "Friends" was nominated for an "Oscar". Kepiye carane nindakake?

Kode Cathetan
String s = ""Friends" was nominated for an "Oscar"";
Pilihan iki ora bakal bisa!

Masalahe yaiku kompiler mikir sampeyan nulis kode sing ora dikarepke:

Kode Cathetan
String s = ""Friends" was nominated for an "Oscar"";
Pilihan iki ora bakal bisa!

Sawise compiler ketemu kuotasi pindho ing kode, iku nganggep apa ing ngisor iki minangka awal string literal. Tandha petik kaping pindho sabanjure nuduhake pungkasan string literal.

Dadi, kepiye carane nulis kuotasi kaping pindho ing literal?


2. Uwal karakter

Ana cara. Iki diarani karakter lolos . Sampeyan mung nulis tandha petik ing senar teks. Lan sadurunge kuotasi, sampeyan nambah simbol \( backslash ) simbol.

Iki minangka string literal nalika ditulis kanthi bener:

Kode Cathetan
String s = "\"Friends\" was nominated for an \"Oscar\"";
Iki bakal bisa!

Compiler bakal napsirake kabeh kanthi bener lan ora bakal nganggep tandha petik sawise garis miring minangka tandha kutip normal.

Apa maneh, yen sampeyan nampilake senar iki menyang layar, kuotasi nganggo garis miring terbalik bakal diproses kanthi bener, lan teks bakal ditampilake tanpa garis miring terbalik:"Friends" was nominated for an "Oscar"

Titik penting liyane. Tanda kutip sing didhisikake dening backslash nggambarake karakter siji: kita mung nggunakake notasi lunyu sing ora ngganggu kemampuan compiler kanggo ngenali literal string ing kode kita. Sampeyan bisa nemtokake kuotasi menyang charvariabel:

Kode Cathetan
char c = '\"';
\"iku siji karakter, ora loro
char c = '"';
Iki uga bisa uga: tandha petik dobel ing kuotasi siji

3. Kahanan umum sing kedadeyan nalika uwal karakter

Kahanan umum sing kalebu karakter sing mlayu

Saliyane kuotasi kaping pindho, ana akeh karakter liyane sing ditangani kompiler kanthi cara khusus. Contone, break baris.

Kepiye carane kita nambahake break baris menyang literal? Ana uga kombinasi khusus kanggo iki:

\n
Karakter line break

Yen sampeyan perlu kanggo nambah break baris menyang string literal, sampeyan mung kudu nambah sawetara karakter: \n.

Tuladha:

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

Ana total 8 kombinasi khusus kaya iki, sing uga disebut urutan uwal . Punika:

Kode Katrangan
\t Lebokake karakter tab
\b Lebokake karakter backspace
\n Lebokake karakter baris anyar
\r Lebokake karakter bali kreta
\f Lebokake karakter feed kaca
\' Lebokake tandha petik siji
\" Lebokake tandha petik pindho
\\ Pasang garis miring mundur

Sampeyan wis kenal karo wong loro, nanging apa tegese 6 liyane?

\tiku karakter tab

Nalika teks iki katon ing teks, iku padha karo mencet Tabtombol nalika ngetik. Iki ngowahi teks sing ngetutake lan ndadekake bisa nyelarasake teks.

Tuladha:

Kode 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

\btegese 'mundur siji karakter'

Urutan ing senar iki padha karo mencet Backspacetombol ing keyboard. Iki mbusak karakter sing ndhisiki:

Kode Output konsol
System.out.println("Hello\b\b World");
Hell World!

\ryaiku watak bali kreta

Karakter iki mindhah kursor menyang wiwitan baris saiki tanpa ngganti teks. Apa wae sing ditampilake sabanjure bakal nimpa senar sing ana.

Tuladha:

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

\fminangka karakter feed kaca

Simbol iki teka mudhun kanggo kita saka dina pisanan dot matrix printer. Outputing urutan iki menyang printer bakal nimbulaké printer mung feed metu sheet saiki, tanpa nyetak teks sembarang, nganti kaca anyar diwiwiti.

Saiki kita bakal ngarani kaca break utawa kaca anyar .

\\yaiku backslash

Kabeh iku langsung ing kene. Yen kita nggunakake backslash kanggo uwal karakter ing teks kita, banjur carane kita nulis karakter backslash dhewe ing senar?

Iku prasaja: nambah backslash kanggo teks — sampeyan kudu nulis loro ing saurutan.

Tuladha:

Kode Output konsol
System.out.println("c:\projects\my\first");
Compiler bakal nguwuh sampeyan amarga karakter sing ora dingerteni.
System.out.println("c:\\projects\\my\\first");
Mangkono uga ditindakake kanthi bener!


4. Unicode encoding

Kaya sing wis dingerteni, saben karakter sing ditampilake ing layar cocog karo kode numerik tartamtu. Sakumpulan kode standar kasebut diarani enkoding .

Ing jaman biyen, nalika komputer anyar diciptakake, pitung bit (kurang saka siji bait) cukup kanggo ngodhe saben karakter. Encoding pisanan mung ngemot 128 karakter. Encoding iki diarani ASCII .

ASCII singkatan saka American Standard Code for Information Interchange - tabel kode standar Amerika kanggo karakter sing bisa dicithak lan sawetara kode khusus.

Iki kalebu 33 karakter kontrol sing ora bisa dicithak (sing mengaruhi cara teks lan spasi diproses) lan 95 karakter sing bisa dicithak, kalebu angka, huruf Latin gedhe lan cilik, lan sawetara tandha wacan.

Encoding Unicode

Nalika komputer saya populer, saben negara wiwit ngetokake enkoding dhewe. Biasane, dheweke njupuk ASCII minangka titik wiwitan lan ngganti karakter ASCII sing arang digunakake kanthi simbol saka aksara masing-masing.

Sajrone wektu, ide muncul: nggawe enkoding siji sing ngemot kabeh karakter saben enkoding ing donya.

Encoding Unicode 1

Mula, ing taun 1993, encoding Unicode digawe, lan basa Jawa dadi basa pamrograman pisanan sing nggunakake enkoding iki minangka standar kanggo nyimpen teks. Saiki Unicode minangka standar kanggo kabeh industri IT.

Sanajan Unicode dhewe minangka standar, ana sawetara perwakilan utawa format transformasi Unicode (UTF): UTF-8, UTF-16 lan UTF-32, lsp.

Jawa nggunakake enkoding Unicode versi majeng — UTF-16: saben karakter dienkode ing 16 bit (2 bita). Bisa nampung nganti 65.536 karakter!

Sampeyan bisa nemokake meh kabeh karakter saben aksara ing donya ing enkoding iki. Alamiah, ora ana sing wis apal kabeh. Sampeyan ora bisa ngerti kabeh, nanging sampeyan bisa google kabeh.

Kanggo nulis karakter Unicode ing program sampeyan nggunakake kode kasebut, sampeyan kudu nulis \u+ kode ing heksadesimal . Tuladhane,\u00A9

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


5. Unicode: titik kode

"640 kilobyte kudu cukup kanggo kabeh wong! Utawa ora". (Kutipan saka Bill Gates)

Urip iku atos, lan suwe-suwe, enkoding UTF-16 wiwit ora nyukupi. Pranyata metu sing ana akeh basa Asia, lan padha duwe akeh glyphs. Lan kabeh glyphs iki mung ora bisa crammed menyang 2 byte.

Apa sing bisa ditindakake? Gunakake luwih bita !

Nanging jinis char mung 2 bait lan ngganti dadi 4 ora supaya gampang: milyar baris kode Jawa wis ditulis ing saindhenging donya, kang bakal break yen jinis char dumadakan dadi 4 bait mesin Jawa. Dadi kita ora bisa ngganti jinis char!

Ana pendekatan liyane. Elinga carane kita uwal karakter dening sijine backslash ing ngarepe. Sejatine, kita encode karakter siji nggunakake sawetara karakter.

Pangripta Jawa mutusake nggunakake pendekatan sing padha.

Sawetara karakter sing katon kanthi visual minangka karakter tunggal dikode minangka rong chars ing senar:

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

Saiki program Java sampeyan bisa ngasilake emojis menyang konsol 😎