首页 > 代码库 > java实现字符串反转

java实现字符串反转

1、java编码方式

参考1http://blog.csdn.net/clbxp/article/details/6625142

  java采用Unicode字符集,内存中采用UTF-16的编码方式:一个字符占2个字节,一个普通汉字占2个字节,但是超大编码的字符集中的字符占4个字节。
  即:
UTF-16的编码形式

类别

字符个数

字节个数

bit

字符

1

2

16

普通汉字

1

2

16

超大字符集(生僻汉字等)

2

4

32

  byte 是字节,字符串在网络传输或存储前需要转换为byte数组。在从网络接收或从存储设备读取后需要将byte数组转换成String。String是字符串,可以看成是由char组成的数组。String 和 char 为内存形式,byte是网络传输或存储的序列化形式。 String序列化成byte数组或反序列化时需要选择正确的编码方式。如果编码方式不正确,就会得到一些0x3F的值。常用的字符编码方式有ISO8859_1、GB2312、GBK、UTF-8/UTF-16/UTF-32。  
2、字符串反转
参考:http://www.jb51.net/article/37399.htm
反转方法StringBuilder的父类中,源代码如下:
public AbstractStringBuilder reverse() {
    boolean hasSurrogate = false;
    int n = count - 1;
    for (int j = (n-1) >> 1; j >= 0; --j) {
        char temp = value[j];
        char temp2 = value[n - j];
        if (!hasSurrogate) {
       hasSurrogate = (temp >= Character.MIN_SURROGATE && temp <= Character.MAX_SURROGATE)
           || (temp2 >= Character.MIN_SURROGATE && temp2 <= Character.MAX_SURROGATE);
         }
         value[j] = temp2;
         value[n - j] = temp;
     }
     if (hasSurrogate) {
         // Reverse back all valid surrogate pairs
          for (int i = 0; i < count - 1; i++) {
             char c2 = value[i];
             if (Character.isLowSurrogate(c2)) {
                 char c1 = value[i + 1];
                 if (Character.isHighSurrogate(c1)) {
                 value[i++] = c1;
                 value[i] = c2;
             }
         }
         }
     }
     return this;
 }
*******************************************************************************************************************
我的实现
/** 
 * 创建时间:2014年8月15日 下午9:44:51 
 * 项目名称:Test 
 * @author Cao Yanfeng 
 * @since JDK 1.6.0_21 
 * 类说明: 
 */
public class AccuracyTest {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String string="caoyanfeng曹艳丰北京大学