Java中提供了许多对于字符串进行操作的方法,集中的表现就是String、StringBuilder和StringBuffer这三个类,他们都提供了大量的方法来对字符串进行操作,String类是不可变的,StringBuilder和StringBuffer都是可变的,其中StringBuffer还是线程安全的,所以在单线程应用中,StringBuilder的速度相对来的还快一点,String类的对象和其余的两个类的对象都是可以相互转换的,因此可以更加灵活地对字符串进行操作,这篇文章主要会介绍String和StringBuilder这两个类,其实这三个类在api文档中都可以很轻松地查到,都是在java.lang
包中,写这篇文章主要是为了让自己对这两个类更加熟悉。
1.String常用方法以及使用
1.1 构造方法
1.public String(String original):
String s = new String("123");
2.public String(char[] value):
char[] arr = {'a','b','c'};
String s = new String(arr);
3.public String(char[] value,int index,int count):
截取字符数组中的一部分元素,把它变成字符串;从index开始,截取count个元素;
4.public String(StringBuilder builder);
由StringBuilder对象生成一个String对象;
1.2 String类的判断方法
1.public boolean equals(Object anObject):
判断两个字符串内容是否相同
2.public boolean equalsIgnoreCase(String anotherString):
判断两个字符串内容是否相同,忽略大小写
3.public boolean startsWith(String prefix):
判断字符串内容是否以传入的字符串内容开头
4.public boolean endsWith(String suffix):
判断字符串内容是否以传入的字符串内容结尾
1.3 String类的获取方法
1.public int length():
获得字符串的长度
2。public char charAt(int index):
获得字符串的index索引的字符
3.public int indexOf(String str):
查找字符串中传入字符串str第一次出现的索引位置
4.public String substring(int beginIndex):
截取字符串,从beginIndex索引开始至字符串结尾
5.public String substring(int beginIndex,int endIndex):
截取字符串,从beginIndex索引开始至endIndex结束
1.4 String类的转换方法
1.public char[] toCharArray():
把字符串变成字符数组;
2.public String toUpperCase():
把字符串中的字符全部转换成为大写;
3.public String toLowerCase():
把字符串中的字符全部转换成为小写;
1.5 String类的去空格方法
public String trim():
去除字符串两端的空格!
1.6 String类的分割方法
public String[] split(String regex):
根据传入的字符串来切割字符串
2.使用String类方法的一些小例子
2.1 遍历字符串
String str = "helloworld";
for (int i = 0; i < str.length(); i++) {
System.out.print(str.charAt(i) + " ");
}
2.2 统计字符串中大写,小写及数字字符个数
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String str = sc.nextLine();
sc.close();
int bigCount = 0;
int smallCount = 0;
int numberCount = 0;
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
if (ch >= 'A' && ch <= 'Z') {
bigCount++;
} else if (ch >= 'a' && ch <= 'z') {
smallCount++;
} else if (ch >= '0' && ch <= '9') {
numberCount++;
} else {
System.out.println("该字符" + ch + "不符合最初设定");
}
}
System.out.println("大写字母:" + bigCount + "个");
System.out.println("小写字母:" + smallCount + "个");
System.out.println("数字字母:" + numberCount + "个");
2.3 把字符串首字母大写其他字母小写
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个字符串:");
String str = sc.nextLine();
sc.close();
String s1 = str.substring(0, 1);
String s2 = str.substring(1);
String s3 = s1.toUpperCase() + s2.toLowerCase();
System.out.println(s3);
2.4 字符串反转
第一种思路:以单个字符从后往前遍历字符串,然后用一个空字符串依次将字符加起来
String str = "helloworld";
String s = "";
for(int i =str.length()-1;i>=0;i--){
s+=str.charAt(i);
}
第二种思路:将字符串转换为字符数组,将字符串数组反转,然后用反转后的数组构造一个字符串
String str = "helloworld";
char[] chs = str.toCharArray();
char temp;
for(int i=0;i<chs.length/2;i++){
temp = chs[i];
chs[i] = chs[chs.length-i-1];
chs[chs.length-i-1] = temp;
}
String result = new String(chs);
3.StringBuilder常用方法以及使用
3.1 构造方法
1.public StringBuilder();
StringBuilder sb = new StringBuilder();
//创建一个StringBuilder对象
2.public StringBuilder(String str):
String str = "你好JAVA";
StringBuilder sb = new StringBuilder(str);
3.2 StringBuilder的增加方法
public StringBuilder append(多种类型):
拼接多种类型的数据,并返回其本身
3.2 StringBuilder的反转方法
public StringBuilder reverse():
实现StringBuilder的对象的反转;
4.使用StringBuilder类方法的一些小例子
4.1 按照格式打印输入数组
int arr[] ={1,3,4,6,8,9,4,7,3};
StringBuilder sb = new StringBuilder();
sb.append("[");
for (int i = 0; i < arr.length; i++) {
if(i==arr.length-1){
sb.append(arr[i]);
}else{
sb.append(arr[i]).append(", ");
}
}
sb.append("]");
String result = sb.toString();
4.2 判断字符串是否对称
String s = "121";
StringBuilder sb = new StringBuilder(s);
sb.reverse();
String result = sb.toString();
boolean flag result.equals(s);
5.String和StringBuilder对象的相互转换
其实String和StringBuilder两个类都提供了以对方对象为参数的构造函数,因此可以很容易进行转换,还有就是StringBuilder类提供的toString()方法也能得到相应字符串的
5.1 String对象转为StringBuilder对象
使用StringBuilder的构造函数
public StringBuilder(String str):
String str = "hello";
StringBuilder sb = new StringBuilder(str);
5.2 StringBuilder对象转为String对象
第一种:使用构造函数
public String(StringBuilder builder);
StringBuilder sb = new StringBuilder();
sb.append("hello");
String str = new String(sb);
第二种:使用StringBuilder类的toString()方法
StringBuilder sb = new StringBuilder();
sb.append("hello");
String str = sb.toString();
6.总结
通过学习这两个方法,感觉其实查询api文档并没有那么恐怖,更多地只是自己吓自己罢了,多去查的话就会变成一件习以为常的事,确实应该多查api,因为这是最准确的说明,去敲代码验证的话也没有直接查来的快,并且文档上面会有相对完整的解释,多用就熟了。