admin管理员组文章数量:1579086
目录
String类
创建字符串对象:
构造方法:
判断功能:
获取功能:
转换功能:
替换功能:
StringBuffer
构造方法:
在末尾添加:
插入:
删除功能:
替换功能:
反转功能:
截取功能:
StringBuilder:
String类StringBuffer类StringBuilder区别
String类
String类代表字符串,由一个个字符组成,jdk8以char[]数组存储,jdk9以byte[]数组存储
创建字符串对象:
String s1 = "abc";//第一种
String s2 = new String("abc");//第二种
两种创建区别:第一种隐式创建,在创建时,会先在常量池中检查是否有相同的字符串,如果有将其地址返回,如果没有将在常量池中创建;第二种用new创建对象,创建新的对象,其地址是独一无二的。
String s1 = "abc";
String s2 = new String("abc");
System.out.println(s1==s2);//false
String s3 = "abc";
String s4 = "abc";
System.out.println(s3==s4);//true
构造方法:
String():初始化为空
String(String s):创建与s相同字符串
String(byte[] b):将byte数组转为字符串
String(char[] c):将char数组转为字符串
String(StringBuffer sb):将StringBuffer类转为String类
String(StringBuilder sb):将StringBuilder类转为String类
判断功能:
boolean equals(Object obj):重写Object中的方法,判断内容是否相等
String s1 = "abc";
System.out.println(s1.equals("abc"));//true
boolean equalsIgnoreCase(String str):不区分大小写,判断内容是否相等,用来匹配验证码
String s1 = "Abundant";
System.out.println(s1.equalsIgnoreCase("abundant"));//true
boolean contains(String str):判断是否包含子串
String s1 = "well-grounded";
System.out.println(s1.contains("grounded"));//true
boolean isEmpty():判断是否位空
String s1 = "";
String s2 = null;
System.out.println(s1.isEmpty());//true
System.out.println(s2.isEmpty());//抛出空指针异常NullPointerException
boolean startsWith(String prefix):判断是否从Prefix开头
String s1 = "reluctant";
System.out.println(s1.startsWith("re"));//true
boolean endsWith(String suffix):判断是否以suffix结尾
String s1 = "reluctant";
System.out.println(s1.endsWith("ant"));//true
int compareTo(String anotherString) 两个字符串之间按照编码大小比较,返回编码差
String s1 = "12a";
System.out.println(s1pareTo("12A"));//32
获取功能:
int length() 获取长度
String s1 = "12a";
System.out.println(s1.length());//3
char charAt(int index) 获取指定位置的字符
String s = "abcef";
char c = s.charAt(4);//c = f
int indexOf(String str) 获取指定字符首次出现的位置
String s = "abcef";
int index = s.indexOf("c");//index = 2
int indexOf(String str,int fromIndex) 从指定的位置开始查找字符首次出现的位置
String s = "abcefc";
int index = s.indexOf("c");
int index1 = s.indexOf("c",index+1);//从指定位置开始找
System.out.println(index1);//5
String substring(int startIndex) 截取字符串,从指定的位置开始,截取到最后一位
String sub = s.substring(2);//从2开始到最后,sub是新的字符串,原来s没变
String substring(int startIndex,int endndex) 截取字符串,从指定的位置开始,到指定位置结束(左包含右不包含)
String s = "abcefc";
String sub1 = s.substring(2,5);//cef
转换功能:
byte[] getBytes() 将字符串转为byte数组
byte[] bytes = "abc".getBytes();//将abc转为byte型数组
System.out.println(Arrays.toString(bytes));//[97, 98, 99]
char[] toCharArray() 将字符串转为char数组
char[] chars = "bca".toCharArray();//toCharArrat()将字符串转为字符数组
Arrays.sort(chars);//排序
String s6 = new String(chars);//将char数组转为String数
System.out.println(s6);//abc
static String valueOf(char[] chs) 将char数组转为字符串
char[] c = new char[]{'d','e','p','i','c','t'};
String c1 = String.valueOf(c);
System.out.println(c);//depict
String toLowerCase() 英文字母转小写
String str = "ConFront".toLowerCase();//confront
String toUpperCase() 英文字母转大写
String str = "logo".toUpperCase();//LOGO
String concat(String str) 连接另一个字符串,返回一个新的字符串
String a = "up";
String a1 = "grade";
System.out.println(a.concat(a1));//upgrade
Stirng[] split(分割符) 按照指定的规则(正则表达式),将字符串拆分为数组。
String b = "ab:cde:ef:fh";
String[] sar = b.split(":");//根据:(冒号)拆分
System.out.println(Arrays.toString(sar));//[ab, cde, ef, fh]
String e = "ab2cde3ef4fh";
String[] f = e.split("\\d");//以数字进行分隔 ,这里用正则表达式
System.out.println(Arrays.toString(f));//[ab, cde, ef, fh]
替换功能:
String replace(char old,char new)新字符替换指定的所有的字符
String e = "ab2cde3ef4fh";
System.out.println(e.replace("2","x"));//abxcde3ef4fh
System.out.println(e.replaceAll("\\d","x"));//abxcdexefxfh
String replace(String old,String new) 新字符串替换指定的所有的子串
String e = "ab2cde3ef4fh";
System.out.println(e.replace("ab","lm"));//lm2cde3ef4fh
replaceAll(String regex, String replacement)新字符串替换指定的所有的子串,使用正则表达式匹配
String e = "ab2cde3ef4fh";
System.out.println(e.replaceAll("\\d","x"));//abxcdexefxfh
replaceFirt(String sregex, String replacement) 用新的字符串替换指定的第一个出现的子串,使用正则表达式匹配
String trim()只能除字符串两端空格
String s = " 1 23abc ";
System.out.println(s.trim());//1 23abc(此处无空格)
StringBuffer
创建String类对象,不能改变内容,底层char value[] 被final修饰,不可以改变;因此在字符串拼接时,会新创建String类
String s1 = "abc";
s1 += "def";//创建新的字符串对象,并将新对象的地址赋值给s1
s1 += "ghi";//再次创建对象,前一个对象将被垃圾回收
System.out.println(s1);//abcdefghi
当需要大量字符串拼接,使用String类每拼接一次都会创建对象,会浪费空间。因此使用StringBuffer 可以改变String字符串,减少空间浪费。
StringBuffer :线程安全的,可变的字符串
构造方法:
public StringBuffer()初始化为空
public StringBuffer(String str)初始化为Str
在末尾添加:
public StringBuffer append(String str):
底层char数组初始容量为16,添加时超出char的容量,不会创建新的StringBuffer,而会创建一个新的数组对象赋给value
StringBuffer s = new StringBuffer("abcd");//4+16=20
s.append("efghij");//在末尾添加,不会创建新的Stringbuffer对象和底层的数组对象
s.append("klmnopq");//在末尾添加
s.append("rstuvw");//在末尾添加
//超出char的容量,不会创建新的StringBuffer,而会创建一个新的数组对象赋给value
System.out.println(s);//abcdefghijklmnopqrstuvw
插入:
public StringBuffer insert(int offset,String str):从第offset位置插入str字符串
StringBuffer str = new StringBuffer("visible");
str.insert(0, "in");//从第0位插入字符串
System.out.println(str);//invisible
删除功能:
public StringBuffer deleteCharAt(int index):指定位置删除的字符
str.deleteCharAt(1);//移除此序列指定位置的 char。
System.out.println(str);//ivisible
public StringBuffer delete(int start,int end):删除指定区间位置的字符串(左包含,右不包含)
//str = invisible
str.delete(0,2);//删除指定区间的字符串
System.out.println(str);//visible
替换功能:
public StringBuffer replace(int start,int end,String str):用str替换start到end-1位置的字符串
StringBuffer str1 = new StringBuffer("possess");
str1.replace(1, 6, "roof");
System.out.println(str1);//proofs
反转功能:
public StringBuffer reverse():翻转字符串
str1.reverse();//proofs --> sfoorp
截取功能:
会创建一个新的对象,截取时返回新的字符串
public String substring(int start):从start到末尾截取
System.out.println(str1.substring(1));//sfoorp -->foorp
public String substring(int start,int end):从start到end截取
System.out.println(str1.substring(2,4));//foorp --> oo
StringBuilder:
与StringBuffer方法功能相同,只是方法没有加synchronized,多线程不安全的
String类StringBuffer类StringBuilder区别
- String:字符常量,适用于少量的字符串拼接
- StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
- StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况
本文标签: StringJavaStringBuilderStringBuffer
版权声明:本文标题:Java中String类、StringBuffer类和StringBuilder类 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1727846092a1133112.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论