一、String
1.常用的输入方式
Scanner in = new Scanner(System.in);
//输入方法一
String s1 = in.next();
//in.next(): 读到空格就停止扫描(输入)。
//输入方法二
String s2 = in.nextLine();
//in.nextLine():读到回车就停止扫描(输入)。
2.String类型的修改
在java中字符串一旦定义了,就不可以改变。我们可以通过String的方法或者通过复制定义的字符串构造StringBuilder和StringBuffer实现对字符串的“修改”。
3.元素访问
可以通过string.charAt(int Index)对字符串某一位置上的字符进行访问,但是不可以通过该方法对其修改。
4.String方法:
String s = in.nextLine();
s.length();
//返回当前字符串的实际长度;
s.charAt(int Index);
//返回下标为Index的字符;
s.substring(int start);
//返回从start开始一直到结束的子串;
s.substring(int start,int end);
//返回范围是[start,end)的子串;
s.compareTo(String anotherString)
//与anotherString进行比较,s大返回正数,s小返回负数,相等返回0;
s.compareTolgnore(String anotherString)
//与anotherString进行比较,s大返回正数,s小返回负数,相等返回0,但忽略大小写;
s.equals(Object anotherObject);
//相等返回true不相等返回false;
s.equalslgnoreCase(String anotherString);
//相等返回true不相等返回false,忽略大小写;
s.cancat(String str)
//连接s和str等效于“+”
s.indexOf(int n/String str);
//从头开始查找n或者str首次出现的位置(若是str返回开始字符的下标),如果没有返回-1;
s.indexOf(int n/String str,int p);
//和上一个方法类似,不同的是从左开始的某个下标往后查找。
s.lastIndexOf(int ch/String str);
//与前面类似,区别在于该方法从字符串的末尾位置向前查找。
s.lastIndexOf(int ch/String str,int p);
//和上一个方法类似,不同的是从左开始的某个下标往前查找。
s.toLowerCase();
//字符串小写转大写;
s.toUpperCase();
//字符串大写转小写;
s.replace(char a,char b);
//将s中的a都替换成b;
s.replaceFirst(String a,String b);
//将s中的第一个子串a替换成b;
s.replaceAll(String a, String b);
//将s中所有a子串替换成b;
二、StringBuffer
1.StringBuffer的构造
StringBuffer s = new StringBuffer();//无参数构造;
StringBuffer s = new StringBuffer(int I);//指定容量构造;
StringBuffer s = new StringBuffer(String s_);//指定字符串构造;
2.StringBuffer的方法
StringBuffer s = new StringBuffer();
s.Capacity();
//返回当前字符串缓冲区的容量;
s.length();
//返回当前字符串缓冲区的实际长度;
s.append(String str);
//向字符串缓冲区内添加字符串str,;
s.insert(int p,String s);
//在第p+1的位置上插入s;
s.deleteCharAt(int Index);
//删除指点字符,返回字符缓冲区;
s.delete(int start,int end);
//删除[start,end)的字符,返回字符缓冲区;
s.substring(int start);
//返回从start开始一直到结束的子串;
s.substring(int start,int end);
//返回范围是[start,end)的子串;
s.replace(int start,int end,String str)
//将[start,end)范围内的字符串和str进行替换,返回字符缓冲区;
s.toString();
//将可变长字符串以字符串的形式返回;
s.reverse();
//将字符串s反转;
三、StringBuilder
1.StringBuilder的构造
StringBuilder s = new StringBuilder();
//无参数构造;
StringBuilder s = new StringBuilder(int I);
//指定容量构造;
StringBuilder s = new StringBuilder(String s_);
//指定字符串构造;
2.StringBuilder的方法
StringBuilder s = new StringBuilder();
s.Capacity();
//返回当前字符串缓冲区的容量;
s.length();
//返回当前字符串缓冲区的实际长度;
s.append(String str);
//向字符串缓冲区内添加字符串str,;
s.insert(int p,String s);
//在第p+1的位置上插入s;
s.deleteCharAt(int Index);
//删除指点字符,返回字符缓冲区;
s.delete(int start,int end);
//删除[start,end)的字符,返回字符缓冲区;
s.substring(int start);
//返回从start开始一直到结束的子串;
s.substring(int start,int end);
//返回范围是[start,end)的子串;
s.replace(int start,int end,String str)
//将[start,end)范围内的字符串和str进行替换,返回字符缓冲区;
s.reverse();
//将字符串s反转;
s.toString();
//将可变长字符串以字符串的形式返回;
四、区别
-
StringBuilder和StringBuffer都可通过toString()转换成 String类型
-
String可以通过类型转换:StringBuilder(String s)就可以实现从String转化成StringBuilder。
-
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
-
和 String 类不同的是,StringBuffer 和 StringBuilder类的对象能够被多次的修改,并且不产生新的未使用对象。
-
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
-
由于 StringBuilder 相较于 StringBuffer 有速度优势,多数情况下建议使用 StringBuilder类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。
-
StringBuffer是线程安全的,但是StringBuilder是没有线程功能的所以其性能会更高一点。