ตัวอย่างการบรรยายพร้อมผู้ให้คำปรึกษาซึ่งเป็นส่วนหนึ่งของหลักสูตร Codegym University ลงทะเบียนสำหรับหลักสูตรเต็ม
"สวัสดี Amigo กาลครั้งหนึ่ง คุณได้เรียนรู้ว่าในการที่จะเขียนสตริงของอักขระในโค้ด คุณต้องใส่เครื่องหมายคำพูดคู่"
"ใช่ และนั่นทำให้เรามีตัวอักษรสตริงไม่นานมานี้ที่ฉันรู้เรื่องนี้"
"ในอาชีพของเรา เรื่องนั้นนานมาแล้ว แต่นั่นไม่ใช่ประเด็นในตอนนี้ โปรดบอกฉันว่าต้องทำอย่างไร หากเราต้องการเครื่องหมายอัญประกาศภายในตัวอักษรสตริง"
"อืม... สตริงที่มีเครื่องหมายคำพูด — อะไรจะง่ายกว่านี้ ฉันแน่ใจว่ามีวิธีบางอย่าง..."
"ใช่ สมมติว่าเราต้องการแสดงข้อความ"Friends" was nominated for an "Oscar"
เราจะทำอย่างไร"
"พูดตามตรง ฉันไม่มีความคิดเลย ฉันคิดอะไรไม่ออกเลย"
"คุณไม่สามารถแก้ปัญหาด้วยตรรกะได้ ให้ฉันแสดงให้คุณเห็นว่าต้องทำอย่างไร
รหัส | หมายเหตุ |
---|---|
|
ตัวเลือกนี้ใช้ไม่ได้!" |
"ตัวเลือกนี้ใช้ไม่ได้ เพราะคอมไพเลอร์แปลรหัสนี้เป็นโค้ดที่ต่างไปจากเดิมอย่างสิ้นเชิง:
รหัส | หมายเหตุ |
---|---|
|
ตัวเลือกนี้ใช้ไม่ได้!" |
"หลังจากที่คอมไพลเลอร์พบอัญประกาศคู่ในโค้ด จะถือว่าสิ่งต่อไปนี้เป็นจุดเริ่มต้นของสตริงลิเทอรัล เครื่องหมายอัญประกาศคู่ถัดไปจะระบุจุดสิ้นสุดของสตริงลิเทอรัล"
"คุณจะเขียนเครื่องหมายคำพูดคู่ภายในตัวอักษรได้อย่างไร"
"มีวิธีหนึ่ง เรียกว่าอักขระหลีกคุณเพียงแค่เขียนเครื่องหมายคำพูดภายในสตริงข้อความ และก่อนเครื่องหมายคำพูด คุณเพิ่มสัญลักษณ์\ ( แบ็กสแลช )
"นี่คือลักษณะตัวอักษรของสตริงเมื่อเขียนอย่างถูกต้อง:
รหัส | หมายเหตุ |
---|---|
|
สิ่งนี้จะได้ผล! |
"คอมไพเลอร์จะตีความทุกอย่างถูกต้องและจะไม่ถือว่าเครื่องหมายคำพูดหลัง เครื่องหมาย แบ็กสแลชเป็นเครื่องหมายคำพูดปกติ
"ยิ่งไปกว่านั้น หากคุณส่งออกสตริงนี้ไปที่หน้าจอ คำพูดที่มีแบ็กสแลชจะได้รับการประมวลผลอย่างถูกต้อง และข้อความจะแสดงโดยไม่มีแบ็กสแลช:"Friends" was nominated for an "Oscar"
"ฉันจะไม่พูดว่ามันสะดวกสุด ๆ ... "
"แต่คุณทำอะไรได้บ้าง นั่นคือกฎ จุดสำคัญอีกจุดหนึ่ง เครื่องหมายอัญประกาศที่นำหน้าด้วยเครื่องหมายแบ็กสแลชแสดงถึงอักขระตัวเดียว เราแค่ใช้สัญกรณ์เรียบ ๆ ที่ไม่รบกวนความสามารถของคอมไพเลอร์ในการจดจำตัวอักษรสตริงในของเรา รหัส คุณสามารถกำหนดคำพูดให้กับchar
ตัวแปร:
รหัส | หมายเหตุ |
---|---|
|
\" เป็นตัวละครเดียวไม่ใช่สองตัว |
|
นอกจากนี้ยังเป็นไปได้: เครื่องหมายอัญประกาศคู่ภายในอัญประกาศเดี่ยว |
สถานการณ์ทั่วไปที่เกิดขึ้นเมื่อหนีอักขระ

"นอกจากเครื่องหมายอัญประกาศคู่แล้ว ยังมีอักขระอื่นๆ อีกมากมายที่คอมไพเลอร์จัดการในลักษณะพิเศษ ตัวอย่างเช่น ตัวแบ่งบรรทัด
"เราจะเพิ่มตัวแบ่งบรรทัดให้กับตัวอักษรได้อย่างไร นอกจากนี้ยังมีชุดค่าผสมพิเศษสำหรับสิ่งนี้:
\n
"ถ้าคุณต้องการเพิ่มตัวแบ่งบรรทัดให้กับตัวอักษรของสตริง คุณเพียงแค่เพิ่มอักขระสองสามตัว\n
"
ตัวอย่าง:
รหัส | เอาต์พุตคอนโซล |
---|---|
|
|
"มีทั้งหมด 8 ชุดค่าผสมพิเศษเช่นนี้ ซึ่งเรียกอีกอย่างว่าEscape Sequencesซึ่งได้แก่:
รหัส | คำอธิบาย |
---|---|
\t |
แทรกอักขระแท็บ |
\b |
แทรกอักขระbackspace |
\n |
แทรกอักขระขึ้นบรรทัดใหม่ |
\r |
ใส่อักขระขึ้นบรรทัดใหม่ |
\f |
แทรก อักขระ ฟีดหน้า |
\' |
ใส่เครื่องหมายอัญประกาศเดี่ยว |
\" |
ใส่เครื่องหมายอัญประกาศคู่ |
\\ |
ใส่แบ็กสแลช |
“คุณแสดงให้ฉันดู 2 รายการแล้ว อีก 6 รายการที่เหลือหมายความว่าอย่างไร”
“ฉันจะอธิบายทั้งหมดเดี๋ยวนี้
\t
เป็นอักขระแท็บ
เมื่อข้อความนี้ปรากฏในข้อความ จะเทียบเท่ากับการกดTab
ปุ่มขณะพิมพ์ มันเลื่อนข้อความที่ตามมาและทำให้สามารถจัดแนวข้อความได้
ตัวอย่าง:
รหัส | เอาต์พุตคอนโซล |
---|---|
|
|
\b
หมายถึง 'ย้อนกลับหนึ่งตัวอักษร'
ลำดับนี้ในสตริงเทียบเท่ากับการกดBackspace
ปุ่มบนแป้นพิมพ์ มันลบอักขระที่อยู่ข้างหน้า:
รหัส | เอาต์พุตคอนโซล |
---|---|
|
|
\r
เป็นอักขระกลับรถ
อักขระนี้ย้ายเคอร์เซอร์ไปที่จุดเริ่มต้นของบรรทัดปัจจุบันโดยไม่เปลี่ยนข้อความ (ขึ้นอยู่กับเวอร์ชันของ JDK) สิ่งถัดไปที่แสดงถัดไปจะเขียนทับสตริงที่มีอยู่
ตัวอย่าง:
รหัส | เอาต์พุตคอนโซล |
---|---|
|
World!ngs |
\f
เป็นตัวอักษรหน้าฟีด
สัญลักษณ์นี้มาถึงเราตั้งแต่ยุคของเครื่องพิมพ์ดอทเมตริกซ์เครื่องแรก การแสดงลำดับนี้ไปยังเครื่องพิมพ์จะทำให้เครื่องพิมพ์ป้อนแผ่นงานปัจจุบันโดยไม่ต้องพิมพ์ข้อความใดๆ จนกว่าจะเริ่มหน้าใหม่
ตอนนี้เราจะเรียกมันว่าตัวแบ่งหน้าหรือหน้าใหม่
\\
เป็นแบ็กสแลช
ทุกอย่างตรงไปตรงมาที่นี่ หากเราใช้เครื่องหมายแบ็กสแลชเพื่อหลีกอักขระในข้อความ เราจะเขียนอักขระแบ็กสแลชในสตริงได้อย่างไร
ง่ายมาก: เพิ่มเครื่องหมายแบ็กสแลชให้กับข้อความ — คุณต้องเขียนสองตัวติดกัน
ตัวอย่าง:
รหัส | เอาต์พุตคอนโซล |
---|---|
|
คอมไพเลอร์จะตะโกนใส่คุณสำหรับอักขระที่ไม่รู้จักที่หลบหนี |
|
เท่านี้ก็เรียบร้อย! |
"การใช้เครื่องหมายทับสองครั้งนั้นสมเหตุสมผล แต่ฉันยังจำอย่างอื่นไม่ได้ในทันที ฉันต้องพึ่งคำใบ้ของคุณ"
"ค่อยๆ จำสิ่งที่ต้องการได้ ไม่ต้องกังวล และสำหรับสิ่งอื่นๆ ก็มี Google
การเข้ารหัส Unicode
"คุณรู้อยู่แล้วว่าอักขระแต่ละตัวที่แสดงบนหน้าจอสอดคล้องกับรหัสตัวเลขเฉพาะ ชุดรหัสมาตรฐานเหล่านี้เรียกว่าการเข้ารหัส
"กาลครั้งหนึ่งนานมาแล้ว เมื่อคอมพิวเตอร์ถูกประดิษฐ์ขึ้นใหม่ เจ็ดบิต (น้อยกว่าหนึ่งไบต์) ก็เพียงพอที่จะเข้ารหัสอักขระทุกตัว การเข้ารหัสครั้งแรกมีอักขระเพียง 128 ตัว การเข้ารหัสนี้เรียกว่าASCII "
"เป็นชื่อที่แปลกดี"
"ไม่มีอะไรแปลกเกี่ยวกับเรื่องนี้ มันเป็นตัวย่อASCIIย่อมาจาก American Standard Code for Information Interchange ซึ่งเป็นตารางรหัสอเมริกันมาตรฐานสำหรับอักขระที่พิมพ์ได้และรหัสพิเศษบางตัว"
"ประกอบด้วยอักขระควบคุมที่ไม่สามารถพิมพ์ได้ 33 ตัว (ซึ่งส่งผลต่อวิธีประมวลผลข้อความและช่องว่าง) และอักขระที่พิมพ์ได้ 95 ตัว รวมถึงตัวเลข ตัวอักษรละตินตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก และเครื่องหมายวรรคตอนหลายตัว

"ในขณะที่คอมพิวเตอร์ได้รับความนิยมมากขึ้น แต่ละประเทศก็เริ่มเผยแพร่การเข้ารหัสของตัวเอง โดยปกติแล้ว พวกเขาใช้ ASCII เป็นจุดเริ่มต้น และแทนที่อักขระ ASCII ที่ไม่ค่อยได้ใช้ด้วยสัญลักษณ์จากตัวอักษรที่เกี่ยวข้อง
"เมื่อเวลาผ่านไป มีความคิดเกิดขึ้น: สร้างการเข้ารหัสเดียวที่มีอักขระทั้งหมดของการเข้ารหัสทั้งหมดในโลก

"ดังนั้น ในปี 1993 การเข้ารหัส Unicodeจึงถูกสร้างขึ้น และภาษา Java กลายเป็นภาษาโปรแกรมแรกที่ใช้การเข้ารหัสนี้เป็นมาตรฐานในการจัดเก็บข้อความ ปัจจุบัน Unicode เป็นมาตรฐานสำหรับอุตสาหกรรมไอทีทั้งหมด
"แม้ว่า Unicode จะเป็นมาตรฐาน แต่ก็มีหลายรูปแบบหรือรูปแบบการแปลง Unicode (UTF): UTF-8, UTF-16 และ UTF-32 เป็นต้น
"Java ใช้การเข้ารหัส Unicode เวอร์ชันขั้นสูง — UTF-16: อักขระแต่ละตัวถูกเข้ารหัสใน 16 บิต (2 ไบต์) สามารถรองรับอักขระได้สูงสุด 65,536 ตัว! คุณสามารถค้นหาอักขระเกือบทุกตัวของทุกตัวอักษรในโลกในการเข้ารหัสนี้ "
"ฉันหวังว่าฉันไม่จำเป็นต้องรู้ด้วยใจ?"
“ถ้าอยากได้ก็ลุยเลย!”
"ตกลง ตกลง ฉันจะใช้กฎนี้: คุณรู้ทุกอย่างไม่ได้ แต่คุณรู้ทุกอย่างใน Google"
"การนำวิธีการที่มีเหตุผลมาใช้คือทุกสิ่ง ดังนั้น ในการเขียนอักขระ Unicode ในโปรแกรมของคุณโดยใช้โค้ดนั้น คุณต้องเขียน\u
+ รหัสเป็นเลขฐานสิบหกตัวอย่างเช่น\u00A9
รหัส | เอาต์พุตคอนโซล |
---|---|
|
|
Unicode: จุดรหัส
"640 กิโลไบต์ควรจะเพียงพอสำหรับทุกคนหรือไม่" บิล เกตส์ เคยกล่าวไว้ว่า หรือไม่. อย่างน้อยคำพูดนี้ก็มาจากเขา”
"ฮ่าฮ่า 640 กิโลไบต์ยังไม่เพียงพอที่จะโหลดสมองของหุ่นยนต์ทำความสะอาด"
"ชีวิตช่างยากลำบาก และเมื่อเวลาผ่านไป การเข้ารหัส UTF-16 เริ่มไม่เพียงพอ ปรากฎว่ามีภาษาเอเชียจำนวนมาก และมีสัญลักษณ์มากมาย และสัญลักษณ์เหล่านี้ไม่สามารถยัดเยียดเป็น 2 ไบต์ได้ "
"ดังนั้นสิ่งที่เราจะทำ?"
"ใช้ไบต์มากขึ้น ! แต่ประเภทถ่านมีเพียง 2 ไบต์และการเปลี่ยนเป็น 4 นั้นไม่ใช่เรื่องง่าย: มีการเขียนโค้ด Java หลายพันล้านบรรทัดทั่วโลก ซึ่งจะเสียหายหากประเภทถ่านกลายเป็น 4 ไบต์ใน Java machine. เราจึงเปลี่ยนประเภทถ่านไม่ได้!
"มีอีกแนวทางหนึ่ง จำไว้ว่าเราหลีกหนีอักขระด้วยการใส่แบ็กสแลชข้างหน้าพวกมันอย่างไร โดยพื้นฐานแล้ว เราเข้ารหัสอักขระตัวเดียวโดยใช้อักขระหลายตัว ผู้สร้าง Java ตัดสินใจใช้วิธีเดียวกัน
"อักขระบางตัวที่ปรากฏเป็นภาพเดียวจะถูกเข้ารหัสเป็น 2 char
s ในสตริง:
รหัส | เอาต์พุตคอนโซล |
---|---|
|
🔊 |
"ตอนนี้โปรแกรม Java ของคุณสามารถส่งออกอิโมจิไปยังคอนโซลได้แล้ว 😎"
"ฉันจะใช้มันเพื่อความสนุกสนานอย่างแน่นอน!"
GO TO FULL VERSION