Chen Jian

string.split()方法

p(String.valueOf("5".split("\\.").length));     //print "1" p(String.valueOf(".5".split("\\.").length));    //print "2" p(String.valueOf("\"\".5".split("\\.").length));//print "2" p(String.valueOf("5.".split("\\.").length));    //print "1" p(String.valueOf("5.\"\"".split("\\.").length));//print "2" p(String.valueOf("".split("hi").length));//print "1" p(String.valueOf("hi?".split("\\?").length)); //pring "1" 还有: "  hi".split("\\s+") = {"","hi"}

用数据包装类比用原始类型作为成员变量的好处

以Integer 和 int 为例进行对比 1.如果成员变量的intValue还未确定,用Integer的话,只须令这个成员为NULL; 但如果用int的话,就必然存在问题,因为一个int成员变量的值总是确定的,即使你没给它赋任何值,它的值就是0 2.对一个对象运用反射机制时,比如setProperty()和getProperty(),都要将Field的值当作对象来处理。Integer成员可以直接用做对象,但int成员还要封装/解封才行 3.充当Map的key时,Integer比int更方便

多线程程序中要注意捕获java.lang.ThreadDeath

    它的API DOC中写着:    The top-level error handler does not print out a message if ThreadDeath is never caught.     如果你的各个线程相继死去,并且没有报错,那很有可能就是这个东西引起的    程序应该在run()方法内部捕捉这个异常,才能保证Thread不死    Tomcat容器会捕获这个错误    如果在Eclipse内执行某个程序,也会捕获这个错误