giá trị mặc định của char là gì?


89
char c = '\u0000';

Khi tôi in c, nó hiển thị 'a' trong cửa sổ dòng lệnh.

Vậy giá trị mặc định của trường kiểu char là gì?

Ai đó đã nói '\ u0000' có nghĩa là rỗng trong unicode; Có đúng không?


bạn có thể kiểm tra xem char của bạn có giá trị mặc định hay không bằng cách:char == 0
ACV

Câu trả lời:


105

Giá trị mặc định của một charthuộc tính thực sự là '\u0000'(ký tự rỗng) như đã nêu trong Đặc tả ngôn ngữ Java, phần §4.12.5 Giá trị ban đầu của biến .

Trong hệ thống của tôi, dòng System.out.println('\u0000');in ra một hình vuông nhỏ, có nghĩa là nó không phải là một ký tự có thể in được - như mong đợi.


26
Điều quan trọng cần lưu ý '\u0000'là không cùng giá trị với null
Edd

null charactergì? Một số câu trả lời cho câu hỏi này đang đề cập đến giá trị mặc định là ký tự null.
Quazi Irfan

3
@ Óscar López, Còn ký tự '\ 0' thì sao? Chúng không giống nhau ?
Tarik

5
@Tarik vâng, chúng giống nhau.
Óscar López

3
@iamcreasy những gì bạn nói là đúng. Lưu ý của tôi chỉ là 'ký tự null' là một ký tự. Nó không phải là nullvề java tức \u0000 == nullsẽ trở lạifalse
Edd

30

'\ u0000' là giá trị mặc định cho một ký tự. Tương đương thập phân của nó là 0.

Khi bạn khai báo một số biến char mà không khởi tạo nó, '\ u0000' sẽ được gán cho nó theo mặc định.

xem mã này

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

Mã này sẽ in true cho lần in cuối cùng.


9

Giá trị mặc định của Character là Character.MIN_VALUE được đại diện bên trongMIN_VALUE = '\u0000'

Ngoài ra, bạn có thể kiểm tra xem trường ký tự có chứa giá trị mặc định như

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

}

7

'\u0000'viết tắt của null. Vì vậy, nếu bạn in một biến char chưa được khởi tạo, bạn sẽ không nhận được gì.


2
Trên thực tế bạn muốn nhận được một lỗi biên soạn;) '\ u0000' là giá trị mặc định rằng một lĩnh vực char là 'khởi' với
Edd

1
Bạn sẽ không nhận được gì. Bạn sẽ nhận được một khoảng trắng hoặc một hình vuông.
Roshana Pitigala

Tôi nhận được "0" nếu tôi đặt cả c và c1 là '\ u0000' System.out.println (c + c1);
alan


0

Char mặc định là ký tự có giá trị int là 0 (không).

char NULLCHAR = (char) 0;

char NULLCHAR = '\ 0';


0

hấp dẫn của nó nói là khoảng trắng hoặc số nguyên 0 theo bằng chứng dưới đây

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

nhưng tôi sẽ không nói như vậy bởi vì, nó có thể khác các nền tảng khác nhau hoặc trong tương lai. Điều tôi thực sự quan tâm là tôi sẽ không bao giờ sử dụng giá trị mặc định này, vì vậy trước khi sử dụng bất kỳ ký tự nào, chỉ cần kiểm tra xem nó có phải là \ u0000 hay không, sau đó sử dụng nó để tránh hiểu nhầm trong các chương trình. Nó đơn giản như vậy.


0

Giá trị mặc định của kiểu dữ liệu char là '\ u0000' (hoặc 0) và giá trị tối đa là '\ uffff' (hoặc 65,535 bao gồm).

Bạn có thể xem thông tin ở đây .


2
Câu hỏi đã có một câu trả lời được chấp nhận cùng với một số câu trả lời khác. Để câu trả lời của bạn trở nên hữu ích, nó nên thêm thông tin mới hữu ích hoặc hiểu biết mới về vấn đề. Chỉ lặp lại thông tin trong các câu trả lời khác là không hữu ích.
AdrianHHH

0

Lưu ý rằng có sự khác biệt rõ ràng giữa null và zero. Trong http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html (tham chiếu ở trên), tuyên bố được thực hiện: -

Ngoài ra còn có một ký tự null đặc biệt có thể được sử dụng làm giá trị cho bất kỳ loại tham chiếu nào. null có thể được gán cho bất kỳ biến nào, ngoại trừ các biến thuộc kiểu nguyên thủy. Bạn có thể làm rất ít điều với giá trị rỗng ngoài việc kiểm tra sự hiện diện của nó. Do đó, null thường được sử dụng trong các chương trình như một điểm đánh dấu để chỉ ra rằng một số đối tượng không khả dụng.

Đó là lý do tại sao các câu lệnh sau sẽ cho bạn một lỗi chứ không phải lỗi khác: -

char a = null; // Kiểu không khớp: không thể chuyển từ null sang char.

char b = 0; // Cú pháp hợp lệ.


0

\u0000 là giá trị mặc định cho kiểu char trong Java

Như những người khác đã đề cập, bạn có thể sử dụng phép so sánh để kiểm tra giá trị của một biến chưa được khởi tạo.

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

-1

Tôi nghĩ rằng đó là '\u00000'hoặc chỉ ''hơn '\u0000' (Một 1st có 5 số không trong khi người cuối cùng có bốn zero.)


@ JohannesH.- đây giống như một câu trả lời cho tôi. Gắn cờ câu hỏi này là 'không phải câu trả lời' là IMO không đúng.
Krease

-1

Giá trị mặc định cho char\ u0000

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

Điều này sẽ trả về true


-1

Giá trị mặc định của char là null, là '\ u0000' theo biểu đồ Unicode . Hãy để chúng tôi xem nó hoạt động như thế nào khi in ra.

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();   
    } }

Lưu ý: Đầu ra trống.


-2

Giá trị mặc định của kiểu nguyên thủy char là '\ u0000' (ký tự rỗng) như đã nêu trong Đặc tả ngôn ngữ Java.

Phím tắt cho 'u0000' là '\ 0', vì vậy giá trị rỗng có thể được biểu thị bằng 'u0000' hoặc '\ 0'.

Chương trình Java dưới đây xác thực các biểu diễn rỗng bằng cách sử dụng trường char instance '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);
    }

}

đầu ra:

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.