1.1 字符串
概念:字符串是一个特殊的对象,字符串一旦初始化就不可以被改变。
格式:String s1=new String(“abc”);或String s2=“abc”;区别是第一种有两个对象,第二种只有一个对象。
System.out.println(s1==s2);和System.out.println(s1.eauals(s2));的结果不同的原因:
String类复写了object类中的equals方法,该方法用于判断字符串是否相同。
String类是使用于描述字符串事物。那么它就提供了多个方法对字符串进行操作
字符串常见的操作有获取,判断,转换,替换,切割,去掉空格,比较
1.2常见的操作-------------获取
1.2.1字符串中的包含的字符数,即字符串的长度
int length();获取字符串长度。
1.2.2根据位置获取在字符串中位置上的某个字符
Char charAt(int index);
1.2.3根据字符获取在字符串中的位置
int indexof(int ch):从头开始查找第一次出现的位置
int indexof(int ch,int fromindex):从指定位置开始查找第一次出现的位置
扩展1:根据字符串获取在字符串中处于的位置
int indexof(String ch):从头开始查找第一次出现的位置
int indexof(String ch,int fromindex):从指定位置开始查找第一次出现的位置
扩展2:根据字符或字符串获取在字符串中最后出现的位置
int lastindexof(int ch)
int lastindexof(int ch,int fromindex)
int lastindexof(String ch)
int lastindexof(String ch,int fromindex)
1.2.4子串:获取字符串中的一部分
String substring(int beginIndex);参数是开始位置
String substring(int beginIndex,int endIndex);注:包头,不包尾。所以substring(0,str.length);
1.3常见的操作-------------判断
1.3.1字符串中是否包含某个字符串
boolean contains(CharSequence s):或int indexof(str)也可以用于指定判断是否包含
1.3.2字符串中是否包含内容
boolean isEmpty():是否为空.如果为空,返回true,否则返回false。
1.3.3字符串是否以指定内容开头
boolean startsWith(String prefix):
1.3.4字符串是否以指定内容结尾
boolean endsWith(String suffix)
1.3.5字符串是否相同
boolean equals(Str): 复写了object类中的equals方法。
1.3.6字符串是否相同,忽略大小写
boolean equalsIgnoreCase(str);
1.4常见的操作------------转换
1.4.1将字符数组转换成字符串
构造函数 String (char[] c)
String (char[] c,offset,count):将字符数组中的一部分转换成字符串,其中offset是起始位置,count是表示个数。
静态方法:static String copyValueOf(char[] c);
static String copyValueof(char[] c,offset,count);
1.4.2将字节数组转换成字符串
构造函数 String (byte[] b)
String (byte[] b,offset,count)
1.4.3将字符串转换成字符数组
char【】 toCharArray();
1.4.4将字符串转换成字节数组
byte【】 getBytes();
1.4.5将基本数据类型转换成字符串
static String valueOf(多种);
1.5常见的操作-----------替换
1.5.1替换
String replace(charSequence target,charSequence replacement)
String replace(char oldchar,char newchar);
注:如果要替换的字符串不存在,那么返回的还是原字符串
1.6常见的操作-----------切割
String【】 split(regex);
1.7常见的操作-----------转换,去除空格,比较
1.7.1将字符串转换成大写,小写
String toUpperCase();
String tolowerCase();
1.7.2将字符串两端的多个空格
String trim();
1.7.3对两个字符串进行自然顺序比较
int compareto(str);
字符串练习1:模拟一个trim方法,去除字符串两端的空格
public static String myTrim()
{
String str=" sajsdfijs ";
int start=0,end=str.length()-1;
while(start<=end&&str.charAt(start)==' ')
{
start++;
}
while(start<=end&&str.charAt(end)==' ')
{
end--;
}
System.out.println(str.substring(start,end+1));
}
练习二:将一个字符串反转,将字符串中指定部分进行反转。
思路:1.先将字符串转换成字符数组;
2.然后进行数组反转;
3.最后将反转后的字符数组转换成字符串
重要代码:
public static String reverseString(String str)
{
char[] ch=str.toCharArray();
reverse(ch);
return new String(ch);
}
public static void reverse(char[] c)
{
for(int start=0,end=c.length-1;start<=end;start++,end--)
{
char temp=c[start];
c[start]=c[end];
c[end]=temp;
}
}
StringBuffer
StringBuffer可以对字符串的增添,是一个容器,长度是可变的。
StringBuffer很多方法与String相同。
方法:存储:append();将指定的数据作为参数添加到已有数据结尾处。
插入:insert();将指定数据插入到指定位置。
删除:StringBuffer delete();删除指定头位置(包含头位置)到末位置(不包含末位置)之间的字符串。
StringBuffer deleteCharAt();删除指定位置的字符。
获取:char charAt();获取指定位置的字符。
修改:replace();替代指定位置之间的字符串。包含头,不包含尾。
setCharAt();将指定位置的字符用指定字符替代,修改。
反转:reverse();将字符串反转。
StringBuilder 是一个可变的字符序列。
此类提供一个与StringBuilder兼容的API,但不保证同步。
StringBuffer是线程安全的可变字符序列。