/* getBytes(String charsetName): 使用指定的字符集将字符串编码为 byte 序列,并将结果存储到一个新的 byte 数组中。 getBytes(): 使用平台的默认字符集将字符串编码为 byte 序列,并将结果存储到一个新的 byte 数组中。 */ public class StringDemo3 { public static void main(String[] args) throws UnsupportedEncodingException { // 字符串和byte数组之间的相互转换 // 定义一个字符串 String str=new String("JAVA 编程 基础"); // 将字符串转换为byte数组,并打印输出 byte[] arrs=str.getBytes("GBK"); for(int i=0;i<arrs.length;i++) System.out.print(arrs[i]+" "); // 将byte数组转换为字符串 String str1=new String(arrs,"GBK"); System.out.println(str1); } }
- 在UTF-8下,每个汉字占3个字节。
- 汉字为负数是因为超过了128,溢出。
- byte 和 String 在转换时,一定要注意编码一致。字符串内存中的分配【★★★★★】
- 字符串的不可变性【★★★★★】
- 定义:字符串本身不发生变化,都是通过赋值来改变的。
- 缺点:如果字符串比较复杂的话,会生成很多中间变量。
字符串(StringBuilder & StringBuffer)
public class StringBuilderDemo1 { public static void main(String[] args) { // 定义一个字符串"你好" StringBuilder str=new StringBuilder("你好"); //在"你好"后面添加内容,将字符串变成"你好,imooc!" // str.append(','); // str.append("imooc!"); // System.out.println("str="+str); System.out.println("str="+str.append(',').append("imooc!")); // 将字符串变成"你好,iMOOC!" // 两种方式: // 1、使用delete方法删除mooc,然后在插入MOOC // System.out.println("替换后:"+str.delete(4, 8).insert(4, "MOOC")); // 2、使用replace方法直接替换 System.out.println("替换后:"+str.replace(4, 8, "MOOC")); // 在字符串"你好,iMOOC"中取出"你好"并输出 System.out.println(str.substring(0,2)); } }
- 在单线程下基本都使用StringBuilder,在多线程中才会考虑使用StringBuffer。