打字猴:1.70044296e+09
1700442960
1700442961 //重新生成一个新的字符串
1700442962
1700442963 System.out.println(new String(b));
1700442964
1700442965 }
1700442966
1700442967 }
1700442968
1700442969 仅仅修改了读取字节的编码格式(修改成了GB2312格式的),结果会是怎样的呢?又或者将其修改成GB18030,结果又是怎样的呢?结果都是“汉字”,不是乱码。哈哈,这是因为GB2312是中文字符集的V1.0版,GBK是V2.0版本,GB18030是V3.0版,版本是向下兼容的,只是它们包含的汉字数量不同而已,注意,UNICODE可不在这个序列之内的。
1700442970
1700442971 注意 一个系统使用统一的编码。
1700442972
1700442973
1700442974
1700442975
1700442976 编写高质量代码:改善Java程序的151个建议 [:1700438129]
1700442977 编写高质量代码:改善Java程序的151个建议 建议59:对字符串排序持一种宽容的心态
1700442978
1700442979 在Java中一涉及中文处理就会冒出很多问题来,其中排序也是一个让人头疼的课题,我们来看下面的代码:
1700442980
1700442981 public static void main(String[]args){
1700442982
1700442983 String[]strs={“张三(Z)”,“李四(L)”,“王五(W)”};
1700442984
1700442985 //排序,默认是升序
1700442986
1700442987 Arrays.sort(strs);
1700442988
1700442989 int i=0;
1700442990
1700442991 for(String str:strs){
1700442992
1700442993 System.out.println((++i)+”、”+str);
1700442994
1700442995 }
1700442996
1700442997 }
1700442998
1700442999 上面的代码定义一个数组,然后进行升序排序,我们期望的结果是按照拼音升序排列,即为李四、王五、张三,但是结果却不是这样的:
1700443000
1700443001 1、张三(Z)
1700443002
1700443003 2、李四(L)
1700443004
1700443005 3、王五(W)
1700443006
1700443007 这是按照什么排序的呀,非常混乱!我们知道Arrays工具类的默认排序是通过数组元素的compareTo方法来进行比较的,那我们来看String类的compareTo的主要实现:
1700443008
1700443009 while(k<lim){
[ 上一页 ]  [ :1.70044296e+09 ]  [ 下一页 ]