Java

你所不知道的Java之char默认值

2018-07-08  本文已影响254人  Lydia_Lovely
毋意,毋必,毋固,毋我。

前言

子绝四:毋意,毋必,毋固,毋我。主观臆断、武断绝对、拘泥固执、自以为是,这四点也是我们每个有独立思想的人应该避免的思维缺陷。

我们知道Java基本数据类型有8种,按所占存储空间从小到大依次说出Java基本数据类型,你能脱口而出吗?

额,卡壳了。

序号 数据类型 大小 默认值
1 byte 8bit (byte)0
2 char 16bit '\u0000'
3 short 16bit (short)0
4 int 32bit 0
5 float 32bit 0.0f
6 long 64bit 0l
7 double 64bit 0.0d
8 boolean - false

For type char, the default value is the null character, that is, '\u0000'.

无意间注意到char的默认值为'\u0000'--4位十六进制数据所表示的字符。
我们知道Java使用的是Unicode字符吗系统,查Unicode字符列表,发现它代表空字符NUL。

那么('\u0000' = 0 = null character) = null?

show me the code.

public class PrimitiveType {

    char c;

    @Test
    public void testChar() {
        PrimitiveType t = new PrimitiveType();
        char c1 = '\u0000';
        char c2 = '\0';
        char c3 = '\u2400';
        System.out.println("c1: " + c1);
        System.out.println("c2: " + c2);
        System.out.println("c3: " + c3);
        System.out.println("c: " + c);
        System.out.println("c1==c: " + (c1 == t.c));
        System.out.println("c1==c2: " + (c1 == c2));
        System.out.println("c1==c3: " + (c1 == c3));
    }
}

结果

image

char默认值'\u0000'不是一个可打印字符,和Java的null并不等同,仅代表Unicode编码中的空字符。

参考

Initial Values of Variables

what's the default value of char?

空字符

上一篇 下一篇

猜你喜欢

热点阅读