一、Java String不以'\0'结尾。String是一个对象,有方法length()获取长度,不需要格外一个字节存储'\0'做结尾。
public void write(String str, int off, int len) throws IOException {
synchronized (lock) {
char cbuf[];
if (len <= writeBufferSize) { //如果长度小于1K的话;
if (writeBuffer == null) {//如果writeBuffer属于第一次使用,还没申请缓存空间时
writeBuffer = new char[writeBufferSize];
}
cbuf = writeBuffer;
}else { // Don't permanently allocate very large buffers.
cbuf = new char[len];
}//将str存入缓存,这里看到了没,这个的len就是字符串的长度
str.getChars(off, (off + len), cbuf, 0);
write(cbuf, 0, len);//向控制台写
}
}if (len <= writeBufferSize) { //如果长度小于1K的话;
if (writeBuffer == null) {//如果writeBuffer属于第一次使用,还没申请缓存空间时
writeBuffer = new char[writeBufferSize];
}
cbuf = writeBuffer;
}else { // Don't permanently allocate very large buffers.
cbuf = new char[len];
}//将str存入缓存,这里看到了没,这个的len就是字符串的长度
str.getChars(off, (off + len), cbuf, 0);
write(cbuf, 0, len);//向控制台写
}
}
二、String与char[]互相转换:
Char[] cTmp;
String s="abc";
1.String-->char[]:
cTmp = s.toCharArray();
2.char[]-->String:
s = String.ValueOf(cTmp);
三、字符串反转算法
方法一:
public String reverseString(String s){if (s == null)return null;char[] cTmp = s.toCharArray();int len = cTmp.length;char c;for (int i = 0; i < len/2; i++) {c = cTmp[i];cTmp[i] = cTmp[len - 1 - i];cTmp[len - 1 - i] = c;}return String.valueOf(cTmp);}方法二:public String reverse(String s){return new StringBuilder(s).reverse().toString();}
四、待学:
StringBuilder貌似很强大的样子
4万+

被折叠的 条评论
为什么被折叠?



