java.lang.String
常用的构造函数:
String()
String(char[] value) : String str = new String({'j','a','v','a'});
String(String original):String str = new String("java");
字符串中常用的方法:
1.length():获取字符串的长度
2.toUpperCase():将字符串转换成大写
3.toLowerCase():将字符串转换成小写
4.indexOf():获取指定字符串在字符串中出现的下标位置(第一个字符的位置),如果不存在返回-1
5.lastIndexOf("z"):获取指定字符串最后一个字符的位置 ,如果不存在返回-1
6.charAt():获取指定下标的字符(下标从0开始)
7.substring(begin, end):字符串截取包含起始位置,不包含结束位置
8.substring(begin):字符串截取,从指定的起始位置截取到最后
9.contains():判断是否包含指定字符串,包含返回true,否则返回false
10.equals():比较两个字符串内容是否相等
11.equalsIgnoreCase():忽略大小写比较两个字符串内容是否相等
12.startsWith():是否以指定字符串开头
13.endsWith():是否以指定字符串结尾:
public class StringDemo { public static void main(String[] args) { String str1=new String("bjsxt"); String str2=new String("bjsxt"); System.out.println(str1==str2);//false System.out.println(str1.equals(str2));//true String str3="bjsxt"; String str4=new String("bjsxt"); System.out.println(str3==str4);//false System.out.println(str3.equals(str4));//true String str5="bjsxt"; String str6="bjsxt"; System.out.println(str5==str6);//ture System.out.println(str5.equals(str6));//true } }
public class StringDemo2 { public static void main(String[] args) { String str="欢迎来到zzsxt进行学习,zzsxt!"; System.out.println("获取字符串长度的方法:"+str.length());//获取数组的长度用的是数组名.length System.out.println("转大写:"+str.toUpperCase());//将字符串转换成大写 System.out.println("转小写:"+str.toLowerCase());//将字符串转换成小写 System.out.println("获取指定下标的字符:"+str.charAt(3));//获取指定下标的字符(下标从0开始) System.out.println("获取指定字符在字符串中出现的下标位置(第一个字符的位置):"+str.indexOf("a"));// System.out.println("获取指定字符在字符串中出现的下标位置(最后一个字符的位置):"+str.lastIndexOf("z"));// System.out.println("截取字符串:"+str.substring(2, 5));//字符串截取包含起始位置,不包含结束位置 System.out.println("截取字符串:"+str.substring(2));//字符串截取,从指定的起始位置截取到最后 System.out.println("判断是否包含指定字符串:"+str.contains("z")); String str2="zzsxt"; String str3="ZZsxt"; System.out.println("比较两个字符串内容是否相等:"+str2.equals(str3)); System.out.println("忽略大小写比较两个字符串内容是否相等:"+str2.equalsIgnoreCase(str3)); // System.out.println(str2.toUpperCase().equals(str3.toUpperCase()));//将字符串统一转换为大写或小写在进行比较 System.out.println("是否以指定字符串开头:"+str.startsWith("zzsxt")); System.out.println("是否以指定字符串结尾:"+str.endsWith("zzsxt!")); } }
字符串常用方法2:
trim():去掉字符串中前后空格
concat(str):连接字符串 可以使用"+"替代
String[] split(String regex):按照指定字符串进行分割,分割后子字符保存到数组返回
replace(char oldChar, char newChar):返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的
public class StringDemo3 { public static void main(String[] args) { String str=" hello world "; String str2="zzsxt"; str=str.trim(); System.out.println(str); // System.out.println(str.concat(str2)); System.out.println(str+str2); String str3="窗前明月光,疑是地上霜.举头望明月,低头思故乡"; String[] strs = str3.split(","); for (String string : strs) { System.out.println(string); } str3=str3.replace('.', ','); System.out.println(str3); } }
一个简单的注册演示
public class Register { public static boolean verity(String name,String password,String repassword){ String message=""; boolean isVerity,isName,isPassword,isRepassword; if(name.length()>3){ isName=true; }else{ message+="用户名长度大于3位!";//message=message+"用户名长度大于3位!"; isName=false; } if(password.length()>6){ isPassword=true; }else{ message+="密码的长度大于6位!"; isPassword=false; } if(password.equals(repassword)){ isRepassword=true; }else{ message+="两次输入的密码不相同!"; isRepassword=false; } isVerity=isName&&isPassword&&isRepassword; System.out.println(message); return isVerity; } public static void main(String[] args) { System.out.println("--------注册系统--------"); boolean isVerify=false; do{ Scanner input = new Scanner(System.in); System.out.println("请输入用户名:"); String name =input.next(); System.out.println("请输入密码:"); String password =input.next(); System.out.println("请输入重复密码:"); String repassword =input.next(); isVerify = verity(name,password,repassword); }while(!isVerify); System.out.println("注册成功!请牢记你的用户名和密码!"); } }
String
public class TestString { public static void main(String[] args) { String str="abc"; //返回以毫秒为单位的当前时间(获取当前时间距元年的总毫秒数) long start = System.currentTimeMillis(); for(int i=0;i<10000;i++){ str+=i; } long end = System.currentTimeMillis(); System.out.println("总耗时:"+(end-start)); } }
String:不可变的字符串
StringBuffer:线程安全的可变字符序列
构造函数:
StringBuffer():
StringBuffer(String str):
常用方法:
sb.append(str):将指定str字符串追加到sb后边
charAt(int index) : 返回此序列中指定索引处的 char 值。
indexOf(String str):返回第一次出现的指定子字符串在该字符串中的索引。
lastIndexOf(String str):返回最右边出现的指定子字符串在此字符串中的索引。
replace(int start, int end, String str):使用给定 String 中的字符替换此序列的子字符串中的字符。
包含start位置,但不包含end位置-->[start,end)
reverse():反转
public class TestStringBuffer { public static void main(String[] args) { StringBuffer sb=new StringBuffer("abc"); sb.append("edfabc"); System.out.println(sb.charAt(3)); System.out.println(sb.indexOf("d")); System.out.println(sb.lastIndexOf("a")); //sb="abcedfabc" System.out.println(sb.replace(2, 4, "hello")); System.out.println(sb); sb.reverse();//反转 System.out.println(sb); //返回以毫秒为单位的当前时间(获取当前时间距元年的总毫秒数) long start = System.currentTimeMillis(); for(int i=0;i<10000;i++){ sb.append(i); } long end = System.currentTimeMillis(); System.out.println("总耗时:"+(end-start)); } }
String:不可变的字符串
StringBuffer:线程安全的可变字符序列(synchronized),线程安全(在多线程中使用),效率低
StringBuilder:一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,非线程安全,效率高
交通信号灯:
同步(存在红绿灯)
不同步(没有红绿灯)
构造函数:
StringBuffer():
StringBuffer(String str):
常用方法:
sb.append(str)***:将指定str字符串追加到sb后边
charAt(int index) : 返回此序列中指定索引处的 char 值。
indexOf(String str):返回第一次出现的指定子字符串在该字符串中的索引。
lastIndexOf(String str):返回最右边出现的指定子字符串在此字符串中的索引。
replace(int start, int end, String str):使用给定 String 中的字符替换此序列的子字符串中的字符。
包含start位置,但不包含end位置-->[start,end)
reverse():反转
public class TestStringBuilder { public static void main(String[] args) { StringBuilder sb=new StringBuilder("abc"); sb.append("edfabc"); System.out.println(sb.charAt(3)); System.out.println(sb.indexOf("d")); System.out.println(sb.lastIndexOf("a")); //sb="abcedfabc" System.out.println(sb.replace(2, 4, "hello")); System.out.println(sb); sb.reverse();//反转 System.out.println(sb); //返回以毫秒为单位的当前时间(获取当前时间距元年的总毫秒数) long start = System.currentTimeMillis(); for(int i=0;i<10000;i++){ sb.append(i); } long end = System.currentTimeMillis(); System.out.println("总耗时:"+(end-start)); } }