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()
返回长度(字符数)。- 其他方法