首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java解惑读书笔记二

2012-12-18 
Java解惑读书笔记2从网上下的java解惑总共讲了61点,我拣一些,自己不知道的或者需要注意的分享出来,以作笔

Java解惑读书笔记2
从网上下的java解惑总共讲了61点,我拣一些,自己不知道的或者需要注意的分享出来,以作笔记。

20.程序中的Unicode转义字符
//\u0022是双引号的Unicode编码表示
System.out.println("a\u0022.length() + \u0022b".length());// 2
\u0022表示一个双引号",可以在编码时用\u0022代替双引号,当然不会有人干这么二的事情,但我们需要知道\u开头的4个数字表示unicode编码的字符,Unicode编码表示的字符是在编译期间就转换成了普通字符,它与普通转义字符(如:")是不一样的,它们是在程序被解析为各种符号之后才处理转义字符序列。

此外,注释中也是支持Unicode转义字符的。

23.string的编码,默认是utf-8或者gbk编码,在将string和byte[]互相转化的时候要注意编码类型,否则容易出现乱码

System.out.println(".class".replaceAll("\\.", "\\\\\\$"));



26.finally与中断
不要用return、break、continue或throw来退出finally语句块,并且千万不要允许受检查的异常传播到finally语句块之外。也就是说不要在finally块内终止程序,而是执行完finally块后,要将控制权移交给try块,由try最终决定怎样结束方法的调用。因为如果在finally里执行return,则try的ruturn则无效果。

27.捕获RuntimeException、Exception或Throwable的catch语句是合法,不管try块里是否抛出了这三个异常。但如果try块没有抛出或不可能抛出检测性异常,则catch不能捕获这些异常。重写或实现时不能扩大异常的范围,如果是多继承,则异常取所有父类方法异常的交集或不抛出异常。这样设计可以编码异常范围扩大。

31.递归构造
public class S  {
private S instance = new S();
public S() {}
}

如果在程序外面构造该类的实例,则会抛出java.lang.StackOverflowError错误。其原因是实例变量的初始化操作将先于构造器的程序体而运行。

32.构造器中的异常
如果父类构造器抛出了检测异常,则子类也只能抛出,而不能采用try-catch来捕获:
33.StackOverflowError
Java虚拟机对栈的深度限制到了某个值,当超过这个值时,VM就抛出StackOverflowError。一般VM都将栈的深度限制为1024,即当方法调用方法的层次超过1024时就会产生StackOverflowError。

热点排行