1.String
package homework.second;
public class TestCharAt {
public static void main(String[] args) {
String str="20200823";
char c=str.charAt(5);
System.out.println(c);
}
}
StringBuffer
package homework.second;
public class TestAppend {
public static void main(String[] args) {
StringBuffer str=new StringBuffer("2020");
str.append("0823");
System.out.println(strb);
}
}
StringBuilder
package homework.second;
public class TestLength {
public static void main(String[] args) {
StringBuilder Strbd=new StringBuilder("20200823");
System.out.println(Strbd.length());
}
}
2.String、StringBuffer、StringBuilder比较
String、StringBuffer、StringBuilder相同点
(1)内部实现基于字符数组,封装了对字符串处理的各种操作
(2)可自动检测数组越界等运行时异常
String、StringBuffer、StringBuilder不同点
(1)String内部实现基于常量字符数组,内容不可变;
StringBuffer、StringBuilder基于普通字符数组,数组大小可根据字符串的实际长度自动扩容,内容可变
(2)性能方面,对于字符串的处理,相对来说
StringBuilder >StringBuffer>String
(3)StringBuffer线程安全;StringBuilder非线程安全
3.因为每次执行到该语句都会返回一个新对象,耗时耗空间,效率低下。
4.将Unicode字符集转为本地字符集(如GB2312或GBK)的过程叫编码,反之叫解码。
编码
package homework.second;
import java.io.*;
public class CharCode {
public static void printByteArray(String msg,byte[] t) {
System.out.println(msg+"**************************");
for(int i=0;i<t.length;i++) {
System.out.println(Integer.toHexString(t[i]));
}
}
public static void printCharArray(String msg,char[] c) {
System.out.println(msg+"**************************");
for(int i=0;i<c.length;i++) {
System.out.println(Integer.toHexString(c[i]));
}
}
public static void main(String[] args) {
try {
String str="中文";
System.out.println(str);
printCharArray("unicode:",str.toCharArray());
byte[] b=str.getBytes("GB2312");
printByteArray("GB2312",b);
byte[] m=str.getBytes("ISO8859-1");
printByteArray("ISO8859-1",m);
}
catch(UnsupportedEncodingException e) {
System.out.println("没有相应的字符集!");
}
}
}
解码
package homework.second;
import java.io.*;
public class Decode {
public static void printByteArray(String msg,byte[] t) {
System.out.println(msg+"**************************");
for(int i=0;i<t.length;i++) {
System.out.println(Integer.toHexString(t[i]));
}
}
public static void printCharArray(String msg,char[] c) {
System.out.println(msg+"**************************");
for(int i=0;i<c.length;i++) {
System.out.println(Integer.toHexString(c[i]));
}
}
public static void main(String[] args) {
byte[] b=new byte[6];
int t=0,pos=0;
String s;
try {
while(t!='\n') {
t=System.in.read();
b[pos]=(byte)t;
pos++;
}
printByteArray("本地码:",b);
s=new String(b,"GBK");
System.out.println(s);
printCharArray("unicode码:",s.toCharArray());
}
catch(Exception e) {
System.out.println(e.getMessage());
}
}
}