String s = "\0002";
//System.out.println(s);
System.out.println(s.length());
如果第2行注释,输出为2,如果第2行不注释,输出就是空白,请问这是为什么?帮帮小弟,谢谢了。

解决方案 »

  1.   

    楼主看看这个就明白了
    http://www.chinaaspx.com/archive/java/19057.htm
      

  2.   

    恩,是八进制转义字符,\000是空字符,可是我不知道为什么\0002还是输出了空白,而且以后s.length()也无法输出
      

  3.   

    正则表达式结构简介:
    字符:
    x   字符 x 
    \\  反斜杠
    \0n     十进制数 (0 <= n <= 7) 
    \0nn    十进制数 0nn (0 <= n <= 7) 
    \0mnn   十进制数 0mnn (0 <= m <= 3, 0 <= n <= 7) 
    \xhh    十六进制数 0xhh 
    \uhhhh  十六进制数 0xhhhh 
    \t  制表符 ('\u0009') 
    \n  换行符 ('\u000A') 
    \r  回车符 ('\u000D') 
    \f  The form-feed character ('\u000C') 
    \a  The alert (bell) character ('\u0007') 
    \e  esc符号 ('\u001B') 
    \cx     x 对应的控制符
    囧,正则不会,只能照搬
      

  4.   


    String s = "\0002"; 
    System.out.println(s); 
    //System.out.println(s.length()); 
    输出2因为这个字符串代表的长度是2 这个输出的是空白,不是2啊。
      

  5.   


    package com.lihan;public class Test 
    {       public static void main(String args[]) 
          { 
           
         String s = "\0002"; 
         System.out.println(s); 
         System.out.println(s.length()); 
          } 
    }  运行结果:
      2
    2
    第一个2前面是有空白的
      

  6.   


    惭愧,我用的是JCreator,这垃圾IDE真烂,我在dos窗口里就可以输出了,我学Java不久,不懂这IDE
    谢谢了啊
      

  7.   

    我用eclipse测试,两个输出的都是2.第二行不用注释,第三行也能输出.public class Test { public static void main(String[] args) {
    String s = "\0002";   //这个是正则表达式,原式为:\0mnn  其中0 <= m <= 3,0 <= n <= 7.
    System.out.println(s); 
    System.out.println(s.length()); 
    }}
      

  8.   

    \ 后面跟数字表示八进制转义,\ 后面最大的数字是 377即范围从 \0 ~ \377 表示 Unicode 字符的 U+0000~U+00FF比如写成:String str = "\7654321";将会是 >54321 因为根据规范,仅有 \76 是八进制转义字符,而 \76 即“>”。 
      

  9.   

    http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.10.5
      

  10.   

    学问太大了,哎,正则表达式估计得到春节过后才会学,
    thinking in java上也有。 javascript 王者归来也有哈 要学,要学