String类
-
String:不可变长的字符序列,Java 程序中的所有字符串字面值都作为此类的实例实现
-
关于创建对象:
String str1 = "abc"; // 1个对象 String str2 = new String("bcd"); // 2个对象 String str3 = new String("abc"); // 1个对象
-
构造方法:
// String() 初始化新创建的 String对象,使其表示空字符序列。 String str1 = new String(); // String(byte[] bytes) // String(byte[] bytes, int offset, int length, String charsetName) byte[] bs = "鬼灭之刃".getBytes("UTF-8"); String str2 = new String(bs, 3, 6, "UTF-8"); System.out.println(str2); // 灭之 // String(char[] value) // String(char[] value, int offset, int count) char[] cs = {'a', 'b', 'c', 'd', 'e', 'f', 'g'}; String str3 = new String(cs, 2, 2); System.out.println(str3); // cd
-
常用方法:
char[] cs = { 'a', 'b', 'c', 'd', 'e', 'f', 'g' }; String str = new String(cs, 0, 7); System.out.println(str); // abcdefg // char charAt(int index) 返回指定索引处的值 System.out.println(str.charAt(4)); // e // int compareTo(String anotherString) 按字典顺序比较两个字符串 // int compareToIgnoreCase(String str) 按字典顺序比较两个字符串,忽略大小写 System.out.println(str.compareTo("A")); // 32 System.out.println(str.compareToIgnoreCase("A")); // 6 // String concat(String str) 将指定的字符串连接到该字符串的末尾 System.out.println(str.concat("hijk")); // abcdefghijk // byte[] getBytes() 使用平台的默认字符集将此String编码为字节序列,将结果存储到字节数组中 byte[] bs = str.getBytes(); System.out.println(Arrays.toString(bs)); // [97, 98, 99, 100, 101, 102, 103] // void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) // 将此字符串中的字符复制到目标字符数组中 char[] dst = new char[4]; str.getChars(2, 6, dst, 0); System.out.println(Arrays.toString(dst)); // [c, d, e, f] // char[] toCharArray() 将此字符串转换为新的字符数组 char[] ch = str.toCharArray(); System.out.println(Arrays.toString(ch)); // [a, b, c, d, e, f, g] // int length() 返回此字符串的长度 System.out.println(str.length()); // 7 // String replace(CharS tar, CharS rep) // 将与字面目标序列匹配的字符串的每个子字符串替换为指定的字面替换序列 System.out.println(str.replace("defg", "xyz")); // abcxyz // String substring(int beginIndex) 返回一个字符串,该字符串是此字符串的子字符串 // String substring(int beginIndex, int endIndex) 不包含endIndex System.out.println(str.substring(2, 6)); // cdef // String trim() 返回一个字符串,其值为此字符串,并删除任何前导和尾随空格。 System.out.println(" a b c d ".trim()); // "a b c d" // static String valueOf(Object obj) 返回 Object参数的字符串 Object形式。 System.out.println(String.valueOf(true)); // true // String[] split(String regex) 将此字符串分割为给定的 regular expression的匹配 String[] spl = str.split("cd"); System.out.println(Arrays.toString(spl)); // [ab, efg] System.out.println(str); // abcdefg --> String的所有方法都会生成一个新的对象,不会修改源对象
-
-
StringBuild 和 StringBuffer:
- StringBuilder:可变长的字符序列,线程不安全,效率高
- 适合单线程环境下大量操作字符串
- StringBuffer:可变长的字符序列,线程安全的,效率较低
- 适合多线程环境系大量操作字符串
- String:适合少量操作字符串,简单,功能较多
- String、StringBuild 和 StringBuffer可以通过构造器相互转换
- StringBuild 和 StringBuffer 的新增方法:
- append(Object o) 追加
- delete(int start, int end) 删除 end不包含
- insert(int offset, char c) 插入
- reverse( ) 翻转
- StringBuilder:可变长的字符序列,线程不安全,效率高