public static void main(String[] args) { char c = '\u0000';
//返回TRUE,说明相等
System.out.println(c == (char) 0); //一个是空字符,一个是空格,查ASCII码表知道的 System.out.println((char) 0);
System.out.println((char) 32);

//疑问1: 为什么打印出的都是空格,但是前后的AB字母字体不一样
System.out.println("a" + String.valueOf((char) 32) + "b");
System.out.println("a" + String.valueOf((char) 0) + "b"); //既然\u0000是空字符,为什么有长度1
System.out.println(String.valueOf((char) 0).length());
System.out.println(String.valueOf((char) 32).length()); }

解决方案 »

  1.   

    char的范围 是0~255,而不是1~255,所以0也是个字符啊,是个字符就有长度的
      

  2.   

    这个是有长度的  空跟null是不一样的
      

  3.   

    Character.MIN_VALUE
    Character.MAX_VALUECharacter.MIN_CODE_POINT
    Character.MAX_CODE_POINT
      

  4.   

    空串是什么内容都没有 "".isEmpty() == true
    "\u0000" "\u0020"
      

  5.   

    1.空字符不同于空格符,好好回想一下c语言中的'\0'
    2.空字符也是字符,要占位的,当然是有长度的。而且'\0'和 '\u0000'是char类型的默认值
      

  6.   

    (char)0是空字符,即字符串的时候是 ""
    (char)32是空格字符,即字符串的时候是 " "
      

  7.   


    我最大的困惑,是既然是空字符,为什么打印出来是个空格?System.out.println("a" + String.valueOf((char) 0) + "b");
      

  8.   

            System.out.println("B\u0000S");
            System.out.println("B\u0020C");
            System.out.printf("S%cC\n",0x0000);
            System.out.printf("S%cC\n",0x0020);
    BS
    B C
    SC
    S C
      

  9.   

    那是不是说明用+号来连接的时候,
    System.out.println("a" + String.valueOf((char) 32) + "b");
    起了什么变化?
      

  10.   

    System.out.println("a" + String.valueOf((char) 32) + "b");
    System.out.println("a" + String.valueOf((char) 0) + "b");
    System.out.println("a\u0000b");结果一样哦!!1
      

  11.   

    出来的不是空格,只是你用 IDE 这个字符是没办法显示的,所以看上去就是个空格!
      

  12.   

    系统的问题,JVM可能针对win7做了什么特殊处理了
    (char)0本身是个字符,变成字符串有长度是可以理解的,但是(char)0是个非显示字符,所以打印时看不出来的,包括打印到文件也看不出来(如果用二进制的方式打开文件能看到相应的字节码,但是字符本身没有被显示出来)。
    10L的代码在winxp上可以的,但是在Win7上不行,也就是说java在win7系统上作了特殊处理,把原来的非显示字符用空格代替显示出来了。
    System.out.println(String.valueOf((char)0).length());
    System.out.println(String.valueOf((char)0).trim().length()); //trim以后发现不一样了
      

  13.   

    上面有点小问题,trim是把小于\u0020都的字符都去掉了