Java中和字符串相关类有以下3种——
- String类
- StringBuild类
- StringBuffer类
String类
对象创建
- 例程
String s_1 = "Hyggge"; String s_2 = s_1; String s_3 = new String("Czh"); char[] s_4 = {'C', 'Z', 'H'}; String s_5 = new String(s_4); - 需要注意的是,String类对象是不可变的(本质上用
final修饰),如以下程序
String a = "Hyggge"; String a = "Czh";
虽然程序最后a引用的对象是"Czh", 但是一开始创建的"Hyggge"对象并没有消失。相当于以下C++程序
// C++ string s_1 = "Hyggge"; string &a = s_1; string s_2 = "Czh"; string &a = s_2;
字符串连接
- 第一种方法——使用
concat()函数
String a = "Hyggge is "; String b = a.concat("Czh"); String c = "Hyggge is ".concat("Czh"); - 第二种方法——使用
+
String a = "Hyggge is " + "Czh " + "!!!";
创建格式化字符串
- 格式化输出和已通过printf和format实现。其中,format是String类中的静态方法。
int age = 19; //method one System.out.printf("Hyggge's age is %d\n", age); //method two String s; s = String.format("Hyggge's age is %d\n", age); System.out.println(s);
String 类中的常用方法
int length()字符串长度boolean isEmpty()检查字符串是否非空int compareTo(String anotherString)字符串比较(字典序)int indexOf(int ch)返回指定字符第一次出现处的索引int indexOf(String str)返回指定子字符串在此字符串中第一次出现处的索引String concat(String str)字符串连接(原对象不变,需要使用中间对象,严重消耗内存,不推荐使用)boolean equals(Object anObject)将字符串和一个对象进行比较- 其他方法
StringBuffer 和 StringBuilder 类
和 String 类不同的是,StringBuffer 和
StringBuilder
类的对象能够被多次的修改,并且不产生新的未使用对象。他们的区别是——
StringBuffer线程安全StringBuilder线程不安全StringBuilder相较于StringBuffer有速度优势(绝大多数情况下使用StringBuilder)
类
对象创建(以StringBuilder类为例)
StringBuilder s = new StringBuilder();
StringBuilder s = new StringBuilder(10); //可以显式的规定大小
StringBuilder s = new StringBuilder("Hyggge"); //可以显式的规定大小
常用方法(以StringBuilder类为例)
StringBuilder append(String str)将指定的字符串追加到此字符序列- **
StringBuilder insert(int offset, String str)** 将 str 参数的字符串插入此序列中 String substring(int start)返回一个新的 String,它包含此字符序列当前所包含的字符子序列StringBuilder reverse(String str)翻转字符串StringBuilder delete(int start, int end)注意左闭右开StringBuilder replace((int start, int end, String str)使用给定 String 中的字符替换此序列的子字符串中的字符String toString()返回此序列中数据的字符串表示形式int indexOf(String str)返回第一次出现的指定子字符串在该字符串中的索引。int length()返回长度(字符数)。- 其他方法