char c = '\u0000';
เมื่อฉันพิมพ์ c มันจะแสดง 'a' ในหน้าต่างบรรทัดคำสั่ง
แล้วค่าเริ่มต้นของฟิลด์ประเภทถ่านคืออะไร?
มีคนกล่าวว่า '\ u0000' หมายถึงโมฆะในยูนิโคด นั่นถูกต้องใช่ไหม?
char c = '\u0000';
เมื่อฉันพิมพ์ c มันจะแสดง 'a' ในหน้าต่างบรรทัดคำสั่ง
แล้วค่าเริ่มต้นของฟิลด์ประเภทถ่านคืออะไร?
มีคนกล่าวว่า '\ u0000' หมายถึงโมฆะในยูนิโคด นั่นถูกต้องใช่ไหม?
คำตอบ:
'\u0000'
ไม่ใช่ค่าเดียวกับ null
null character
? บางคำตอบสำหรับคำถามนี้อ้างถึงค่าเริ่มต้นเป็นอักขระว่าง
null
อยู่ในเงื่อนไข java คือ\u0000 == null
จะกลับมาfalse
"\ u0000"เป็นค่าเริ่มต้นสำหรับอักขระ เทียบเท่าทศนิยมคือ 0
เมื่อคุณประกาศตัวแปรถ่านโดยไม่ได้เตรียมใช้งาน '\ u0000' จะถูกกำหนดให้เป็นค่าเริ่มต้น
ดูรหัสนี้
public class Test {
char c;
public static void main(String args[]) throws Exception {
Test t = new Test();
char c1 = '\u0000';
System.out.println(t.c);
System.out.println(c1);
System.out.println(t.c == c1);
}
}
รหัสนี้จะพิมพ์จริงสำหรับการพิมพ์ครั้งล่าสุด
ค่าเริ่มต้นของ Character คือCharacter.MIN_VALUEซึ่งแสดงภายในเป็นMIN_VALUE = '\u0000'
นอกจากนี้คุณสามารถตรวจสอบว่าฟิลด์อักขระมีค่าเริ่มต้นเป็น
Character DEFAULT_CHAR = new Character(Character.MIN_VALUE);
if (DEFAULT_CHAR.compareTo((Character) value) == 0)
{
}
'\u0000'
ย่อมาจากnull
. ดังนั้นหากคุณพิมพ์ตัวแปรถ่านที่ไม่ได้เริ่มต้นคุณจะไม่ได้อะไรเลย
มันคือ "\ u0000" ดูข้อมูลเพิ่มเติมได้ที่นี่
ถ่านเริ่มต้นคืออักขระที่มีค่า int เป็น 0 (ศูนย์)
ถ่าน NULLCHAR = (ถ่าน) 0;
ถ่าน NULLCHAR = '\ 0';
มันบอกว่าเป็นช่องว่างสีขาวหรือจำนวนเต็ม 0 ตามหลักฐานด้านล่าง
char c1 = '\u0000';
System.out.println("*"+c1+"*");
System.out.println((int)c1);
แต่ฉันจะไม่พูดอย่างนั้นเพราะมันอาจจะแตกต่างจากแพลตฟอร์มที่แตกต่างกันหรือในอนาคต สิ่งที่ฉันสนใจจริงๆคือฉันจะไม่ใช้ค่าเริ่มต้นนี้ดังนั้นก่อนที่จะใช้ถ่านใด ๆ ให้ตรวจสอบว่าเป็น \ u0000 หรือไม่จากนั้นใช้เพื่อหลีกเลี่ยงความเข้าใจผิดในโปรแกรม ง่ายๆแค่นั้นเอง
โปรดทราบว่ามีความแตกต่างที่ชัดเจนระหว่างโมฆะและศูนย์ ในhttp://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html (อ้างอิงด้านบน) มีการสร้างคำสั่ง: -
นอกจากนี้ยังมีลิเทอรัลว่างพิเศษที่สามารถใช้เป็นค่าสำหรับการอ้างอิงประเภทใดก็ได้ null อาจถูกกำหนดให้กับตัวแปรใด ๆ ยกเว้นตัวแปรประเภทดั้งเดิม มีเพียงเล็กน้อยที่คุณสามารถทำได้ด้วยค่า null นอกเหนือจากการทดสอบการมีอยู่ ดังนั้นจึงมักใช้ null ในโปรแกรมเป็นเครื่องหมายเพื่อระบุว่าวัตถุบางอย่างไม่พร้อมใช้งาน
นั่นคือเหตุผลที่ข้อความต่อไปนี้จะทำให้คุณมีข้อผิดพลาดไม่ใช่อย่างอื่น: -
ถ่าน a = null; // ประเภทไม่ตรงกัน: ไม่สามารถแปลงจาก null เป็น char
ถ่าน b = 0; // ไวยากรณ์ที่ถูกต้อง
\u0000
เป็นค่าดีฟอลต์สำหรับประเภท char ใน Java
ดังที่คนอื่น ๆ กล่าวถึงคุณสามารถใช้การเปรียบเทียบเพื่อตรวจสอบค่าของตัวแปรที่ไม่ได้กำหนดค่าเริ่มต้น
char ch;
if(ch==0)
System.out.println("Default value is the null character");
ฉันคิดว่ามันเป็น'\u00000'
หรือ''
มากกว่า'\u0000'
(อันที่ 1 มี 5 ศูนย์ในขณะที่อันสุดท้ายมีศูนย์สี่ตัว)
ค่าดีฟอลต์สำหรับchar
คือ\ u0000
public class DefaultValues {
char varChar;
public static void main(String...l)
{
DefaultValues ob =new DefaultValues();
System.out.println(ob.varChar=='\u0000');
}
}
สิ่งนี้จะกลับมาเป็นจริง
ค่าเริ่มต้นของถ่านเป็นโมฆะซึ่งเป็น '\ u0000' ตามแผนภูมิ Unicode ให้เราดูว่ามันทำงานอย่างไรในขณะที่พิมพ์ออกมา
public class Test_Class {
char c;
void printAll() {
System.out.println("c = " + c);
}
public static void main(String[] args) {
Test_Class f = new Test_Class();
f.printAll();
} }
หมายเหตุ: เอาต์พุตว่างเปล่า
ค่าดีฟอลต์ของชนิดพื้นฐานของ char คือ '\ u0000' (อักขระ null) ตามที่ระบุไว้ในข้อกำหนดภาษา Java
ทางลัดสำหรับ "u0000" คือ "\ 0" ดังนั้น null จึงสามารถแทนค่าได้ด้วย "u0000" หรือ "\ 0"
โปรแกรม Java ด้านล่างตรวจสอบการแสดงค่าว่างโดยใช้อินสแตนซ์ถ่านฟิลด์ 'c'
public class DefaultValueForchar {
char c;
public static void main(String[] args) {
char c0 = '\0';
char cu0000 = '\u0000';
DefaultValueForchar obj = new DefaultValueForchar();
System.out.println(obj.c);
System.out.println(c0);
System.out.println(cu0000);
System.out.println(c0==cu0000);
System.out.println(obj.c==c0);
System.out.println(obj.c==cu0000);
}
}
char == 0