ค่าเริ่มต้นของถ่านคืออะไร?


89
char c = '\u0000';

เมื่อฉันพิมพ์ c มันจะแสดง 'a' ในหน้าต่างบรรทัดคำสั่ง

แล้วค่าเริ่มต้นของฟิลด์ประเภทถ่านคืออะไร?

มีคนกล่าวว่า '\ u0000' หมายถึงโมฆะในยูนิโคด นั่นถูกต้องใช่ไหม?


คุณสามารถตรวจสอบว่าถ่านของคุณมีค่าเริ่มต้นหรือไม่ภายใน:char == 0
ACV

คำตอบ:


105

ค่าเริ่มต้นของcharแอตทริบิวต์เป็นจริง'\u0000'(ตัวอักษร null) ตามที่ระบุไว้ในข้อมูลจำเพาะภาษา Java ส่วน§4.12.5ค่าเริ่มต้นของตัวแปร

ในระบบของฉันเส้นจะSystem.out.println('\u0000');พิมพ์สี่เหลี่ยมจัตุรัสเล็ก ๆ ซึ่งหมายความว่าไม่ใช่อักขระที่พิมพ์ได้ตามที่คาดไว้


26
โปรดทราบว่า'\u0000'ไม่ใช่ค่าเดียวกับ null
Edd

คืออะไรnull character? บางคำตอบสำหรับคำถามนี้อ้างถึงค่าเริ่มต้นเป็นอักขระว่าง
Quazi Irfan

3
@ ÓscarLópezถ่าน '\ 0' ล่ะ? ไม่เหมือนกัน?
Tarik

5
@Tarik ใช่พวกเดียวกัน
ÓscarLópez

3
@iamcreasy สิ่งที่คุณพูดถูกต้อง บันทึกของฉันมีเพียงว่า 'null character' คืออักขระ มันไม่ได้nullอยู่ในเงื่อนไข java คือ\u0000 == nullจะกลับมาfalse
Edd

30

"\ 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);
    }
}

รหัสนี้จะพิมพ์จริงสำหรับการพิมพ์ครั้งล่าสุด


9

ค่าเริ่มต้นของ Character คือCharacter.MIN_VALUEซึ่งแสดงภายในเป็นMIN_VALUE = '\u0000'

นอกจากนี้คุณสามารถตรวจสอบว่าฟิลด์อักขระมีค่าเริ่มต้นเป็น

Character DEFAULT_CHAR = new Character(Character.MIN_VALUE);
if (DEFAULT_CHAR.compareTo((Character) value) == 0)
{

}

7

'\u0000'ย่อมาจากnull. ดังนั้นหากคุณพิมพ์ตัวแปรถ่านที่ไม่ได้เริ่มต้นคุณจะไม่ได้อะไรเลย


2
จริงๆแล้วคุณจะได้รับข้อผิดพลาดในการคอมไพล์;) '\ u0000' คือค่าเริ่มต้นที่ฟิลด์ถ่านถูก 'เริ่มต้น' ด้วย
Edd

1
คุณจะไม่ได้รับอะไรเลย คุณจะได้ช่องว่างสีขาวหรือสี่เหลี่ยมจัตุรัส
Roshana Pitigala

ฉันได้ "0" ถ้าฉันใส่ทั้ง c และ c1 เป็น '\ u0000' System.out.println (c + c1);
อลัน



0

มันบอกว่าเป็นช่องว่างสีขาวหรือจำนวนเต็ม 0 ตามหลักฐานด้านล่าง

char c1 = '\u0000';
System.out.println("*"+c1+"*");
System.out.println((int)c1);

แต่ฉันจะไม่พูดอย่างนั้นเพราะมันอาจจะแตกต่างจากแพลตฟอร์มที่แตกต่างกันหรือในอนาคต สิ่งที่ฉันสนใจจริงๆคือฉันจะไม่ใช้ค่าเริ่มต้นนี้ดังนั้นก่อนที่จะใช้ถ่านใด ๆ ให้ตรวจสอบว่าเป็น \ u0000 หรือไม่จากนั้นใช้เพื่อหลีกเลี่ยงความเข้าใจผิดในโปรแกรม ง่ายๆแค่นั้นเอง


0

ค่าเริ่มต้นของประเภทข้อมูลถ่านคือ "\ u0000" (หรือ 0) และค่าสูงสุดเป็น "\ uffff" (หรือรวม 65,535)

ท่านสามารถเข้าดูข้อมูลที่นี่


2
คำถามมีคำตอบที่ยอมรับแล้วพร้อมคำตอบอื่น ๆ เพื่อให้คำตอบของคุณเป็นประโยชน์ควรเพิ่มข้อมูลใหม่ที่เป็นประโยชน์หรือข้อมูลเชิงลึกใหม่ ๆ ให้กับปัญหา การให้ข้อมูลซ้ำในคำตอบอื่นไม่เป็นประโยชน์
AdrianHHH

0

โปรดทราบว่ามีความแตกต่างที่ชัดเจนระหว่างโมฆะและศูนย์ ในhttp://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html (อ้างอิงด้านบน) มีการสร้างคำสั่ง: -

นอกจากนี้ยังมีลิเทอรัลว่างพิเศษที่สามารถใช้เป็นค่าสำหรับการอ้างอิงประเภทใดก็ได้ null อาจถูกกำหนดให้กับตัวแปรใด ๆ ยกเว้นตัวแปรประเภทดั้งเดิม มีเพียงเล็กน้อยที่คุณสามารถทำได้ด้วยค่า null นอกเหนือจากการทดสอบการมีอยู่ ดังนั้นจึงมักใช้ null ในโปรแกรมเป็นเครื่องหมายเพื่อระบุว่าวัตถุบางอย่างไม่พร้อมใช้งาน

นั่นคือเหตุผลที่ข้อความต่อไปนี้จะทำให้คุณมีข้อผิดพลาดไม่ใช่อย่างอื่น: -

ถ่าน a = null; // ประเภทไม่ตรงกัน: ไม่สามารถแปลงจาก null เป็น char

ถ่าน b = 0; // ไวยากรณ์ที่ถูกต้อง


0

\u0000 เป็นค่าดีฟอลต์สำหรับประเภท char ใน Java

ดังที่คนอื่น ๆ กล่าวถึงคุณสามารถใช้การเปรียบเทียบเพื่อตรวจสอบค่าของตัวแปรที่ไม่ได้กำหนดค่าเริ่มต้น

char ch;
if(ch==0)
    System.out.println("Default value is the null character");

-1

ฉันคิดว่ามันเป็น'\u00000'หรือ''มากกว่า'\u0000' (อันที่ 1 มี 5 ศูนย์ในขณะที่อันสุดท้ายมีศูนย์สี่ตัว)


@ JohannesH - นี่ดูเหมือนคำตอบสำหรับฉัน การตั้งค่าสถานะว่า 'ไม่ใช่คำตอบ' ไม่ใช่ IMO ที่ถูกต้อง
Krease

-1

ค่าดีฟอลต์สำหรับcharคือ\ u0000

public class DefaultValues {
char varChar;
public static void main(String...l)
 {
    DefaultValues ob =new DefaultValues();
    System.out.println(ob.varChar=='\u0000');
 }  
}

สิ่งนี้จะกลับมาเป็นจริง


-1

ค่าเริ่มต้นของถ่านเป็นโมฆะซึ่งเป็น '\ 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();   
    } }

หมายเหตุ: เอาต์พุตว่างเปล่า


-2

ค่าดีฟอลต์ของชนิดพื้นฐานของ 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);
    }

}

เอาต์พุต:

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