เครื่องหมายคำพูดเดี่ยวและคู่ใน Java มีความแตกต่างกันหรือไม่?


101

เครื่องหมายคำพูดเดี่ยวและคู่ใน Java มีความแตกต่างกันหรือไม่?

คำตอบ:


146

ใช้เครื่องหมายคำพูดเดี่ยวสำหรับเครื่องหมายคำพูดcharคู่สำหรับตัวอักษรStringเช่น:

char c = 'a';
String s = "hello";

ไม่สามารถใช้วิธีอื่นได้ (เช่นใน Python เป็นต้น)


10
และแน่นอนพฤติกรรมนี้ยืมมาจาก C (ซึ่งอาจได้มาจากที่อื่นฉันคิดว่า)
JesperE

สำหรับฉันเครื่องหมายวรรคตอนตามตัวอักษรจะถูกส่งโดยอัตโนมัติintในบริบทดังกล่าว charดังนั้นจึงไม่จำเป็นต้องเป็น Deservin 'downvotes บางอย่าง ... ง่าย
Hydroper

36

อักขระเป็นอักขระ UTF-16 ตัวเดียวนั่นคือตัวอักษรตัวเลขเครื่องหมายวรรคตอนแท็บช่องว่างหรือสิ่งที่คล้ายกัน

ตัวอักษรอักขระเป็นอักขระตัวเดียวที่อยู่ในเครื่องหมายอัญประกาศเดี่ยวเช่นนี้

char myCharacter = 'g'; 

หรือลำดับการหลีกเลี่ยงหรือแม้แต่ลำดับการหลีกเลี่ยง Unicode:

char a = '\t';    // Escape sequence: tab
char b = '\177'   // Escape sequence, octal.
char c = '\u03a9' // Unicode escape sequence. 

เป็นที่น่าสังเกตว่าลำดับการหลีกเลี่ยง Unicode ได้รับการประมวลผลเร็วมากในระหว่างการคอมไพล์และด้วยเหตุนี้การใช้ '\ u00A' จะนำไปสู่ข้อผิดพลาดของคอมไพเลอร์ สำหรับสัญลักษณ์พิเศษควรใช้ลำดับการหลีกแทนเช่น "\ n" แทน "\ u00A"

เครื่องหมายคำพูดคู่สำหรับStringคุณต้องใช้ "ลำดับการหลีกเลี่ยงเครื่องหมายคำพูดคู่" ( \") ภายในสตริงซึ่งมิฉะนั้นจะยุติสตริง
ตัวอย่างเช่น:

System.out.println("And then Jim said, \"Who's at the door?\"");

ไม่จำเป็นต้องหลีกเลี่ยงเครื่องหมายคำพูดคู่ในเครื่องหมายคำพูดเดี่ยว
บรรทัดต่อไปนี้ถูกต้องตามกฎหมายใน Java:

char doublequote = '"';

12

ลองพิจารณาโค้ดบรรทัดนี้ (Java):

System.out.println("H"+"A"); //HA
System.out.println('H'+'a'); //169

1) บรรทัดแรกเป็นการต่อกันHและAจะส่งผลให้HA(String literal)

2) ประการที่สองเรากำลังเพิ่มค่าของอักขระสองตัวตามตาราง ASCII H= 72 และa= 97 นั่นหมายความว่าเรากำลังเพิ่ม72+97มันเป็นเช่น('H'+'a')นั้น

3) ลองพิจารณาอีกกรณีหนึ่งที่เราจะมี:

System.out.println("A"+'N');//AN

ในกรณีนี้เราจะจัดการกับกำหนดการ String Aและถ่านที่จะทำให้NAN


4

อัญประกาศเดี่ยวระบุอักขระและอัญประกาศคู่ระบุสตริง

ถ่าน c = 'c';

'c' -----> c เป็นอักขระ

สตริง s = "stackoverflow";

"stackoverflow" ------> stackoverflow คือสตริง (เช่น collection if characters)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.