- String字符串
- 概念
String表示字符串,所谓字符串,就是一连串的字符;
String是不可变类,一旦String对象被创建,包含在对象中的字符序列(内容)是不可变的,直到对象被销毁;
-
- 常用方法
-
-
- length() 字符串的长度
-
例1:
String str = "abcdefg";
int length = str.length();
System.out.println(length);
例2:
char chars[]={'a','b','c'};
String s=new String(chars);
int len=s.length();
System.out.println(len);
-
-
- charAt() 截取一个字符
-
例:
String str ="abc";
char ch = str.charAt(1);
System.out.println(ch);
-
-
- toCharArray():把字符串转换为char[]数组
-
例:
String str ="abc";
char[] ch = str.toCharArray();
for (int i = 0; i < ch.length; i++) {
System.out.println(ch[i]);
}
-
-
- equals()和equalsIgnoreCase() 比较两个字符串
-
equalsIgnoreCase()忽略英文大小写 可用于验证码验证
-
-
- startsWith()和endsWith()
-
startsWith()方法决定是否以特定字符串开始,endWith()方法决定是否以特定字符串结束
例:
String str ="abcdefg";
System.out.println(str.startsWith("a"));
System.out.println(str.endsWith("g"));
-
-
- equals()和==
-
equals():方法比较字符串对象中的字符
==:运算符比较两个对象是否引用同一实例。
例:
String s1="Hello";
String s2=new String("Hello");
System.out.println(s1.equals(s2));//true
System.out.println(s1==s2);//false
-
-
- split拆分
-
例:
String str = "qweetr,ytuyi,yusads";
String[] s = str.split(",");
for (int i = 0; i < s.length; i++) {
System.out.println(s[i]);
}
-
-
- indexOf()和lastIndexOf()
-
indexOf() 查找字符或者子串第一次出现的地方。
例:
String str = "abcdefgabc";
int index = str.indexOf("c");
System.out.println(index);
lastIndexOf() 查找字符或者子串是后一次出现的地方。
例:
String str = "abcdefgabc";
int index = str.lastIndexOf("c");
System.out.println(index);
-
-
- substring()
-
第一种是:String substring(int startIndex)
例:
String str = "abcdefgabc";
String result = str.substring(2);
System.out.println(result);
第二种是:String substring(int startIndex,int endIndex)
例:
String str = "abcdefgabc";
String result = str.substring(2,4);
System.out.println(result);
-
-
- concat() 连接两个字符串
-
例:
String str1 = "abcd";
String str2 = "efgabc";
String result = str1.concat(str2);
System.out.println(result);
-
-
- replace() 替换
-
例:
String str = "abcda";
str = str.replace('a', 'w');
System.out.println(str);
-
-
- trim() 去掉起始和结尾的空格
-
例:
String str = " ab cd ";
str = str.trim();
System.out.println(str);
-
-
- valueOf() 转换为字符串
-
例:
int num = 123;
String str = String.valueOf(num);
System.out.println(str);
-
-
- toLowerCase() 转换为大写
-
例:
String str = "abc";
str = str.toUpperCase();
System.out.println(str);
-
-
- toUpperCase() 转换为小写
-
例:
String str = "ABC";
str = str.toLowerCase();
System.out.println(str);
-
-
- 练习
-
- 输入一个字符串,判断这个字符串的长度如果小于6就输出“长度不够”,否则输出“正确”。
import java.util.Scanner;
public class two{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
System.out.println("输入一段字符串");
String str=input.nextLine();
if(str.length()<6){
System.out.println("长度不够");
}
else
System.out.println("输入正确");
}
}
- 输入一个用户名,与一个密码,判断这个用户名与密码是否都等于lanqiao,并不区分大小写。
import java.util.Scanner;
public class two{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
System.out.printf("输入账号:");
String name=input.nextLine();
System.out.printf("输入密码:");
String pwd=input.nextLine();
if(name.equalsIgnoreCase(name)==pwd.equalsIgnoreCase(pwd)){ //equalsIgnoreCase()忽略大小写,判断字符串是否已知
System.out.println("账号密码相同");
}
else {
System.out.println("账号密码不一致");
}
}
}
- 输入一个小写字符串,输出这个字符串的大写形式。
import java.util.Scanner;
public class two{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
System.out.printf("输入字符串将它转为大写形式:");
String str=input.nextLine();
str=str.toUpperCase(); //toUpperCase()将小写转为大写
System.out.println(str);
}
}
- 输入一个字符串,格式如:我的名字叫:XXXX,要求使用字符串的方法提取出名字。
import java.util.Scanner;
public class two{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
System.out.println("输入名字 格式如:我的名字叫:XXX");
String name=input.nextLine();
char[] ch = name.toCharArray(); //将字符串转为数组
for (int i = 6; i < ch.length; i++) { //从:之后输出数组
System.out.print(ch[i]);
}
}
}
5、输入一个字符串,“我爱你,中华”,拆分之后分别输出
public class two{
public static void main(String[] args){
System.out.println("将 我爱你,中华 拆分输出");
String str="我爱你,中华";
String[] s = str.split(","); //split拆分输出
for (int i = 0; i < s.length; i++) {
System.out.println(s[i]);
}
}
}
- StringBuffer
- 概念
StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类。
String:
一旦定义了数据,数据不可以改变
String a=”abc”;
a=”ttt”;
输出a,则是输出ttt,之前的abc没有改变(仍然占空间),ttt重新开辟空间,a指向ttt的空间。
如果内容需要频繁改变,建议不要用string,开辟新空间占内有且耗时间;
增强版String
StringBuffer直接在当前空间改变值,不开辟新空间
-
- 常用方法
StringBuffer类中的方法主要偏重于对于字符串的变化,例如追加、插入和删除等,这个也是StringBuffer和String类的主要区别
-
-
- append方法:追加内容到当前对象的末尾
-
例:
StringBuffer sb = new StringBuffer("person");
sb.append("user");
sb.append("pass");
-
-
- insert方法:插入内容
-
例:
StringBuffer sb = new StringBuffer(“TestString”);
sb.insert(4,false);
-
-
- deleteCharAt和delete方法:
-
deleteCharAt:根据索引删除
例:
StringBuffer sb = new StringBuffer(“Test”);
sb. deleteCharAt(1);
delete:删除指定区间以内的所有字符
例:
StringBuffer sb = new StringBuffer(“TestString”);
sb. delete (1,4);
-
-
- setCharAt方法:修改内容
-
例:
StringBuffer sb = new StringBuffer(“abc”);
sb.setCharAt(1,’D’);
-
-
- reverse方法:内容反转
-
例:
StringBuffer sb = new StringBuffer(“abc”);
sb.reverse();
- String字符串与StringBuffer实验
观察结果:比较执行时间
public class ReviewDemo{
public static void main(String[] args) {
System.out.println("==========String示例==============");
String s = "";
long begintime = System.currentTimeMillis();//开始时间
for(int i = 1;i <= 100000;i++){
s += i;
}
long endtime = System.currentTimeMillis();//结束时间
long time = endtime - begintime;//时间差
System.out.println("运行时间为:"+time);
System.out.println("==========StringBuffer示例========");
StringBuffer s1 = new StringBuffer();
s = "";
begintime = System.currentTimeMillis();//开始时间
for(int i = 1;i <= 100000;i++){
s = ""+i;
s1 = new StringBuffer(s);
}
endtime = System.currentTimeMillis();//结束时间
time = endtime - begintime;//时间差
System.out.println("运行时间为:"+time);
}
}