有关override返回类型的问题,我想下面一段代码足以说明,请注意注释部分:
1 class a{}
2 class b extends a{}
3
4 class p{
5public a getsomething(){return new a();}
6 }
7 class s extends p{
8public b getsomething(){return new b();}//只有b是a的子类的时候,s子类才可以使用返回类型为b的同签名函数覆盖其父类p的函数
9 }
再次说明,请注意注释部分。
关于unicode
java5之前支持的是unicode3.0,所有的字符存在于一个16位的char类型中,然而,从java5开始它将支持unicode4.0,其中大部分新的字符是汉字。首先你需要了解一些基本的名词:codepoint, bmp(basic multilingual plan),supplementary characters。
codepoint:就是代表特定字符的数字,例如0x3c0是数学pi的符号的codepoint
bmp(basic multilingual plan):bmp是介于\u0000到\uffff之间的所有的unicode codepoint。所有的这些codepoint可容于java的一个char中。
supplementary characters:这些是位于bmp之外的unicode codepoint。是21位的codepoint,有从010000到10ffff的十六进制值,必须由一个int来表示。
所以,实际的结果就是string中char的数目并不保证与codepoint的数目相同。有时候两个char代表单一的codepoint(unicode4.0),有时候代表两个codepoint(unicode3.0)。
关于stringbuilder
stringbuilder与stringbuffer的使用时机与方式是一样的,stringbiulder是在thread线程安全性不是问题的情况下来直接替换stringbuffer的。
如果你是在单一的thread环境下,或者一段你并不担心会有多个thread访问的程序代码中,或者是synchronize的,那使用stringbuilder来代替stringbufdfer是最好的选择。
======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/