JAVA String学习笔记
String是一种特殊的对象(不同于8种基本数据类型)。String类的特殊性可以它的两个其他的类不具有的特点体现出来
在创建一个String对象的时候,我们不仅可以通过和其他类类似的创建方式,通过
new的方式创建,我们也可以直接通过赋值创建1
2
3String newStr1 = new String("content"); // 和其他对象类似的创建方式
String newStr2 = "content";
// String 特殊的创建方式String可以直接进行+运算,达到字符串连接的效果
1
2
3
4String str3 = "One String";
String str4 = " Another String";
String str5 = str3 + str4;
// str5 = "One String Another String"
另外一个需要注意的点:String可以为空,但是空字符串不代表null。
1 | String str6 = ""; |
String作为一个对象,具有一个对象应该具有基本元素。String的field都是private的,所以我们也不需要知道他们的具体内容。String提供的method可以帮助我们实现很多对String的操作
char charAt(int i)返回String在第\(i\)个位置的字符int compareTo(String anotherString)返回值是整型,它是先比较对应字符的大小(ASCII码顺序),如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的差值,如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符做比较,以此类推,直至比较的字符或被比较的字符有一方结束。(菜鸟教程)String concat(String str)和加法运算符相同的效果int indexOf(int ch)int indexOf(int ch, int fromIndex)int indexOf(String str)int indexOf(String str, int fromIndex)返回String中出现的第一个相应的参数字符的下标,fromIndex表示从此处开始搜索。对应的有int lastIndexOf(parameters)表示最后一个出现的字符下标boolean isEmpty()判断一个String是否为空,若是返回true。String replace(char oldChar, char newChar)将原本的字符串中的所有oldchar用newChar代替,返回替换后的字符串String[] split(String regex, int limit)以regex为界限分割String得到一个数组。参数int limit(optional)表示分割的上限次数(以前limit-1的regex进行分割,共分成limit个String),limit<=0表示无界限。e.g. 在下面这种情况中,
|被编译器默认认为是或运算符, 所以我们需要用"\\|"进行区分1
2
3
4
5
6String s=“ABC|DEF|GHI”;
s.split(“|”)
/*-> [ “A”, “B”, “C”, “|”, “D”, “E”, “F”, “|”, “G”, “H”, “I”];*/
String s=“ABC|DEF|GHI”;
s.split(“\\|”);
/* -> [ “ABC”, “DEF”, “GHI”]; */String substring(int beginIndex, int endIndex)返回从beginIndex开始到endIndex(不包括)的substring。String trim()返回消除了所有空格之后的字符串- 有关String更详细的方法可以参考官方文档
String一旦被创建就不能再更改(注:String.concat()和运算符"+"都会创建一个新的String对象而不是在原来的String基础上进行更改),所以Java提供了另一个类来实现String的更改
1 | StringBuilder strbui = new StringBuilder("something "); |
相比于concat和加法运算,使用StringBuilder的好处就是提高了效率
数字和字符串之间的转换
Integer与String转化
Integer.parseInt(str)将str转化为对应的IntegerInteger转化为对应的字符串
1
2
3String a = "" + 123;
String a = Integer.toString(123);
String a = String.valueOf(123);
Double与String转化
Double.parseDouble(str)将str转化为对应的DoubleDouble转化为String使用
String.valueOf(double d)1
2double d = 11.01;
String s = String.valueOf(d);