前言
String有一个value的字符数组,用来保存字符串的。默认编码是utf-8
String常用方法//从toffset开始,是否以prefix开头publicbooleanstartsWith(Stringprefix,inttoffset)//str出现的最后一次的下标publicintlastIndexOf(Stringstr)//返回下标在beginIndex和endIndex之间的字符串publicStringsubstring(intbeginIndex,intendIndex)//连接str,并返回一个新的字符串publicStringconcat(Stringstr)//匹配regex正则表达式publicbooleanmatches(Stringregex)//替换字符publicStringreplace(charoldChar,charnewChar)//替换字符串publicStringreplace(CharSequencetarget,CharSequencereplacement)//获取charsetName编码的字节数组publicbyte[]getBytes(StringcharsetName)//获取publicintcodePointAt(intindex)//分割publicString[]split(Stringregex,intlimit)//转成小写publicStringtoLowerCase()//转成大写publicStringtoUpperCase()//截取前后空格publicStringtrim()//elements使用delimiter作为连接符,合并成一个新字符串publicstaticStringjoin(CharSequencedelimiter,CharSequence…elements)publicstaticStringjoin(CharSequencedelimiter,Iterable<?extendsCharSequence>elements)//args参数填充进format的占位符,并返回新字符串publicstaticStringformat(Stringformat,Object…args)//转为缓存池的字符串publicnativeStringintern()
使用示例
Stringdata=”String字符串操作-必知必备”;System.out.println(data.startsWith(“St”,0));System.out.println(data.startsWith(“St”,5));———-truefalse字符串的格式化输出
public static String format(String format, Object… args)
System.out.println(String.format(“%s-%s”,”wst”,”csc”));——–wst-csc字符串的缓存池和String.intern
string.intern();intern先判断常量池是否存相同字符串,存在则返回该引用;否则在常量池中记录堆中首次出现该字符串的引用,并返回该引用。
如果是先执行 String s = “st” ;相当于执行了intern();先在常量池创建”st”,并且将引用A存入常量池,返回给s。此时String(“hello”).intern()会返回常量池的引用A返回
使用示例
publicstaticvoidmain(String[]args)throwsException{Stringone=”st”;Stringtwo=newString(“st”);Stringthree=two.intern();System.out.println(two==one);System.out.println(three==one);}—————falsetrue字符串和正则匹配、Matcher字符说明\将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,”n”匹配字符”n”。”\n”匹配换行符,”\(“匹配”(“^匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性,^ 还会与”\n”或”\r”之后的位置匹配$匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,$ 还会与”\n”或”\r”之前的位置匹配*零次或多次匹配前面的字符或子表达式。例如,zo* 匹配”z”和”zoo”。* 等效于 {0,} 一次或多次匹配前面的字符或子表达式。例如,”zo “与”zo”和”zoo”匹配,但与”z”不匹配。 等效于 {1,}?零次或一次匹配前面的字符或子表达式。例如,”do(es)?”匹配”do”或”does”中的”do”。? 等效于 {0,1}{n}n 是非负整数。正好匹配 n 次。例如,”o{2}”与”Bob”中的”o”不匹配,但与”food”中的两个”o”匹配{n,}n 是非负整数。至少匹配 n 次。例如,”o{2,}”不匹配”Bob”中的”o”,而匹配”foooood”中的所有 o。”o{1,}”等效于”o “。”o{0,}”等效于”o*”{n,m}m 和 n 是非负整数,其中 n <= m。匹配至少 n 次,至多 m 次。例如,”o{1,3}”匹配”fooooood”中的头三个 o。’o{0,1}’ 等效于 ‘o?’。注意:您不能将空格插入逗号和数字之间。?当此字符紧随任何其他限定符(*、 、?、{n}、{n,}、{n,m})之后时,匹配模式是”非贪心的”。”非贪心的”模式匹配搜索到的、尽可能短的字符串,而默认的”贪心的”模式匹配搜索到的、尽可能长的字符串。例如,在字符串”oooo”中,”o ?”只匹配单个”o”,而”o “匹配所有”o”。.匹配除”\r\n”之外的任何单个字符。若要匹配包括”\r\n”在内的任意字符,请使用诸如”[\s\S]”之类的模式。\n换行符匹配。等效于 \x0a 和 \cJ\r匹配一个回车符。等效于 \x0d 和 \cM\s匹配任何空白字符,包括空格、制表符、换页符等\d数字字符匹配。等效于 [0-9][a-z]字符范围。匹配指定范围内的任何字符。例如,”[a-z]”匹配”a”到”z”范围内的任何小写字母
使用示例
publicstaticvoidmain(String[]args)throwsException{Stringcontent=”Iamst!”;Stringpattern=”.*st.*”;booleanisMatch=Pattern.matches(pattern,content);System.out.println(“字符串中是否包含了’st’子字符串?” isMatch);}—————字符串中是否包含了’st’子字符串?trueStringBuffer和StringBuilder
StringBuffer、StringBuilder和String一样,也用来代表字符串。String类是不可变类,每次都要重新申请内存,不过StringBuffer和StringBuilder是事先申请缓存内存,在拼接变长且较长的字符串时,性能比String好
StringBuffer是线程安全的,每一次加减操作都是加上锁的;StringBuilder则是StringBuffer无锁版本。如果对线程安全不了解,建议使用StringBuffer,不需考虑加锁会带来性能的损耗,因为jvm会自动视情况优化为无锁操作
spring工具类StringUtilspublicstaticbooleanisEmpty(Objectstr)//是否含有空格符publicstaticbooleancontainsWhitespace(CharSequencestr)//截取两边空格符publicstaticStringtrimWhitespace(Stringstr)//替换所有空格符publicstaticStringtrimAllWhitespace(Stringstr)//获取文件名publicstaticStringgetFilename(Stringpath)欢迎指正文中错误参考文章关于String.intern()[1]String的Intern方法[2]Java 正则表达式[3]Reference[1]
关于String.intern(): https://blog.csdn.net/u014333083/article/details/80354900
[2]
String的Intern方法: https://www.cnblogs.com/xuyunqi/p/7928435.html
[3]
Java 正则表达式: https://www.runoob.com/java/java-regular-expressions.html