字符串
从概念上来讲字符串就是Unicode字符序列,java中没有内置的字符串类型,而是在标准java类库中提供一个预定义类,她就叫做String。每个用双引号括起来的字符串都是String类型的。例如:
String a = "你好。";
子串
子串:字符串中任意个连续的字符组成的子序列称为该串的子串。
那么怎么知道一个字符串有多少个子串呢?
例:字符串ab的子串:a、b、ab和一个空子串共4个即(2+1+1)个,abc的子串:a、 b、 c、 ab、 bc 、abc和一个空子串 共(3+2+1+1)个,
所以若字符串的长度为n,则子串的个数就是[n*(n+1)/2]+1个,"software"中非空子串的个数就是8+7+....+1=36个
怎么得到子串呢?
我们可以使用substring方法,列如:
String a ="Hello";
String s = a.substring(0,3);这样我们就得到了一个有字符Hel组成的字符串。从下标为0的开始截取但是不包括3。
拼接
与绝大数的程序语言一样,java中也允许使用+号来进行拼接两个字符串。
注意:当一个字符串与一个非字符串拼接时,后者被转换为字符串(任意一个java对象都可以转换成字符串)
int age =21; String a ="拼接"+age;这个时候a输出则为‘拼接21’。这种特性通常使用在输出语句中。
字符串不可改变
长度不可变(不能增加,不能删除)
内容不可变(内容不可以被修改以及替换)
String提供了哪些功能?
删除字符串(字符)
String a= "hello"
String b = a.delete(2,3)
-----delete(int start,int end);
-----deleteCharAt(int index);
替换字符串(字符)
-----replace(String old,,String str);
-----replacr(char oldChar,char newChar);
追加字符串
-----append();//1组重载方法
插入字符串
-----insert(int index,xx)//1组重载方法
判断字符串以什么开头
-----startsWith(String str);
判断字符串以什么结尾
-----endsWith(String str);
获取出现的位置
-----indexOf();//1组方法 offset
改变大小写
-----toUpperCase();
-----toLowerCase();
求子串
-----subString(int index);
-----subString(int start,int end);
去除前后空格
-----trim();
判断是否包含
-----contains(String str);
判断是否相等
-----equals(String anotherStr);
分割字符串
-----split(String rule);
比较大小:
-----compareTo(String anotherStr);
求字符串的长度
-----length();
StringBuilder代表什么数据类型?
可变字符串
字符串自身可变(长度、内容可变)
StringBulider具有哪些功能?
追加
----append();//参数是要追加的内容
插入
----insert(int index,xxx)
删除
----delete(int start,int end)
替换
----replace(int start,int end, String str);
----setCharAt(inde,char);
StringBuffer和StringBuilder一样。
方法同上
StringBuffer和StringBuilder有什么区别?
StringBuilder效率高,多线程下不安全。(推荐)
StringBuffer效率低,多线程下安全。