首页 > 代码库 > java实现字符串反转
java实现字符串反转
1、java编码方式
参考1:http://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曹艳丰北京大学
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。