一、String类适用于描述字符串事物, 那么它提供了多个方法对字符串进行操作
常见操作:
1、获取
1.1字符串中包含的字符数,也就是字符串的长度
int length():获取长度
1.2根据位置获取位置上某个字符
char charAt(int index)
1.3根据字符获取该字符在字符串中位置
int indexOf(int ch);返回的是ch在字符串中第一次出现的位置
int indexOf(int ch,int fromIndex):从fromIndex指定位置开始,获取在字符串中出现的位置
int indexOf(String str);返回的是ch在字符串中第一次出现的位置
int indexOf(String str,int fromIndex):从fromIndex指定位置开始,获取在字符串中出现的位置
2、判断
2.1字符串中是否包含某一个子串
boolean contains(str);
特殊之处:indexOf()可以索引str第一次出现位置,如果返回-1;表示str不在字符串中
所以,也可以用于对指定判断是否包含
if(str.indexOf("aa")!=-1)
而且该方法既可以判断,也可以获取位置
2.2字符中是否有内容
boolean isEmpty(str);
2.3字符串是是否以指定内容开头
boolean startsWith(str);
2.4字符串是否以指定内容结束
boolean startsWith(str);
2.5判断字符串内容是否相同。复写了Object类中equals方法
boolean eaquls(str);
2.6判断内容是否相同,并忽略大小写
Boolean equalsIgnoreCase();
3、转换
3.1将字符数据转成字符串
构造函数:String(char[])
String(char[],offset,count):将字符数组一部分转化字符串
静态方法:static String copyValueOf(char[]);
static String copyValueOf(char[] data,int offset,int count);
static String ValueOf(char[]);
3.2将字符串转成字符数据
char[] toCharArray();
3.3将字节数组转成字符串
String(byte[])
String(byte[],offset,count):将字节数组一部分转化字符串
3.4将字符串转成字节数组
byte[] getBytes();
3.5将基本数据类型转成字符串
static String ValueOf(int);
static String ValueOf(double);
3+"";//String.ValueOf(3);
特殊:字符串和字节数组转化过程是可以指定编码表
4、替换
Stirng replace(oldchar,newchar);
5,切割
String[] split(regex);
6、子串 获取字符串中的一部分
String substring(begin);
String substring(begin,end);
7、转换,去空格 比较
7.1将字符串转成大写或小写
String toUpperCase();
String toLowerCase();
7.2将字符串两端的多个空格去除
String trim();
7.3对两个字符串进行自然书讯的比较
int compareTo(string);
代码实现:
public class StringMethodDemo {
public static void method_7()
{
String s=" hellow java ";
sop(s.toUpperCase());
sop(s.trim());
String s1="aca";
String s2="aca";
sop(s1.compareTo(s2));
}
public static void method_sub()
{
String s="abcdef";
sop(s.substring(2));//从指定位置到结尾,如果不存在,出现角标越界
sop(s.substring(2,4));//包含头,不包含尾
}
public static void method_split()
{
String s="zhangsan,lisi,wangwu";
String[] arr=s.split(",");
for(int x=0;x<arr.length;x++)
{
sop(arr[x]);
}
}
public static void method_is()
{
String str="ArrayDemo.java";
//判断文件名称是否是Array单词开头
sop(str.startsWith("Array"));
//判断文件名称是否是.java文件
sop(str.startsWith(".java"));
//判断文件名称是否是以。java结束
sop(str.startsWith(".java"));
}
public static void Method_get()
{
String str="abcadefga";
sop(str.length());//长度
sop(str.charAt(4));//根据索引获取字符
sop(str.indexOf('m'));//根据字符获取索引
sop(str.lastIndexOf('a'));//反向查找
}
public static void method_trans()
{
char[] arr={'a','b','s','s','e','f','f'};
String s=new String(arr,1,3);
sop("s="+s);
}
public static void method_replace()
{
String s="hello java";
String s1=s.replace('a','n');//如果替换不存在,返回原串
sop("s="+s);
sop("s1="+s1);
}
public static void main(String[] args) {
method_7();
//method_replace();
//Method_get();
//method_is();
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
二、StringBuffer是字符串缓冲区
是一个容器
特点:
1、长度可变化,
2、可以操作多个数据类型
3、最终会通过toString方法变成字符串
CURD
1、存储
StringBuffer apend();将定数据作为参数添加到已有数据的末尾
StringBuffer insert(index,数据):可以将数据插入到指定index位置
2、删除
StringBuffer delete(start,end):删除缓冲区中数据,包含头不包含尾
StringBuffer deleteCharAt(index):删除指定位置字符串
3、获取
char charAt(int index);
int indexOf(String str);
int lastindexOf(String str);
int length();
String subString(int start,int end);
4、修改
StringBuffer replace(int start, int end, String str)
void setCharAt(int index, char ch)
5、反转
StringBuffer reverse();
6、将缓冲区中指定数据存储到指定字符串中
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
JDk1.5版本之后出现了Stringbuilder
StringBuffer 是线程同步
StringBuilder 是线程不同步
升级三个因素
1、提高效率
2、简化书写
3、提高安全性
代码实现:
public class StringBufferDemo {
public static void main(String[] args) {
//method_update();
StringBuffer sb=new StringBuffer("abcde");
char[] chs=new char[6];
sb.getChars(2, 5, chs, 1);
for(int x=0;x<chs.length;x++)
{
sop("chs["+x+"]="+chs[x]+";");
}
}
public static void method_update()
{
StringBuffer sb=new StringBuffer("abcde");
sb.replace(1,4,"java");
sb.setCharAt(2, 'k');
sop(sb.toString());
}
public static void method_delete()
{
StringBuffer sb=new StringBuffer("asdfghjkl");
sb.delete(1,1);
//清空缓冲区
//sb.delete(0,sb.length());
sb.deleteCharAt(3);
sop(sb);
}
public static void method_add()
{
StringBuffer sb=new StringBuffer();
sb.append(34).append(true).append("b");
sb.insert(1, "ass");
sop(sb);
}
public static void sop(Object str) {
System.out.println(str);
}
}
三、总结
通过上面内容学习,学习了字符串String一些属性和方法,可以对字符串进行获取、判断、转换、替换、切割、
子串,去空,比较等操作,在以后运用中有很大帮助。字符串缓冲区是对字符串的扩充,主要功能可以对字符串进行存储、删除、获取、反转、修改等操作,相对于String有很多优点。