Java程序低手之Override返回类型以及Unicode和StringBuilder

本文详细解析Java中Unicode的实现方式,从Unicode3.0到Unicode4.0的过渡,以及如何有效利用stringbuilder和stringbuffer进行字符串操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有关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^)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值