网站建设源代码,花都网站建设设计,制作网线的线序,申请网站步骤Java——String类的方法 String str1 “abc” 与String str2 new String(“abc”)有什么区别#xff1f; 字符串常量存储在字符串常量池#xff0c;目的是共享字符串非常量对象存储在堆中 String的常用方法
常用方法1#xff1a;
int length()#xff1a;返回字符串的…Java——String类的方法 String str1 “abc” 与String str2 new String(“abc”)有什么区别 字符串常量存储在字符串常量池目的是共享字符串非常量对象存储在堆中 String的常用方法
常用方法1
int length()返回字符串的长度return value.length
String str abcdefghijklmn;
System.out.println(str.length());
/*输出结果14*/char charAt(int index)返回某索引处的字符return value[index]
String str abcdefghijklmn;
System.out.println(str.charAt(13));
/*输出结果n*/boolean isEmpty()判断是否是空字符串return value.length 0
String str abcdefghijklmn;
System.out.println(str.isEmpty());
/*输出结果false*/
/*为空返回true不为空返回false*/String toLowerCase()使用默认语言环境将String中的所有字符转换成小写
String str AbcdefghijklmN;
System.out.println(str.toLowerCase());
/*输出结果abcdefghijklmn*/String toUpperCase()使用默认语言环境将String中的所有字符转换成大写
String str AbcdefghijklmN;
System.out.println(str.toUpperCase());
/*输出结果ABCDEFGHIJKLMN*/String trim()返回字符串的副本忽略前导空白和尾部空白(中间的空白不能忽略)
String str AbcdefghijklmN ;
System.out.println(str.trim());
/*输出结果AbcdefghijklmN*/boolean equals(Object obj)比较字符串的内容是否相同
String str AbcdefghijklmN;
System.out.println(str.equals(abcdefghijklmN));
/*输出结果false*/boolean equalsIgnoreCase(String anotherString)与equals方法类似忽略大小写
String str AbcdefghijklmN;
System.out.println(str.equalsIgnoreCase(abcdefghijklmN));
/*输出结果true*/
String concat(String str)将指定字符串连接到此字符串的结尾。等价于“”
String str AbcdefghijklmN;
System.out.println(str.concat(abcdefghijklmN));
/*输出结果AbcdefghijklmNabcdefghijklmN*/int compareTo(String anotherString)比较两个字符串的大小
String str Ac;
System.out.println(str.compareTo(Ab));
/*输出结果1*/String str Ab;
System.out.println(str.compareTo(Ab));
/*输出结果0*/String str Ab;
System.out.println(str.compareTo(Ad));
/*输出结果-2*/String substring(int beginIndex)返回一个新的字符串它是此字符串从deginIndex开始到最后一个字符结束的一个子字符串
String str abcdefghijklmN;
System.out.println(str.substring(2));
/*输出结果cdefghijklmN*/String substring(int beginIndex,int endIndex)返回一个新的字符串它是此字符串的从begin开始截取到endIndex(不包含)的一个子字符串
String str abcdefghijklmN;
System.out.println(str.substring(2,9));
/*输出结果cdefghi
不包含str[9]
*/常用方法2
boolean endsWith(String suffix)测试此字符串是否以指定的后缀结束
String str abcdefghijklmN;
System.out.println(str.endsWith(lmN));
/*输出结果true*/boolean startsWith(String prefix)测试此字符串是否以指定的前缀结束
String str abcdefghijklmN;
System.out.println(str.startsWith(abb));
/*输出结果false*/boolean startsWith(String prefix,int toffset)测试此字符串从指定索引开始的子字符串是否以指定前缀开始
String str abcdefghijklmN;
System.out.println(str.startsWith(de,3));
/*输出结果true*/boolean contains(CharSequence s)当且仅当此字符串包含指定的char值序列时返回true
String str abcdefghijklmN;
System.out.println(str.contains(hi));
/*输出结果true*/int indexOf(String str)返回指定子字符串在此字符串中第一次出现的索引从指定的索引开始
String str lllllabcdeabcdeabcsde;
System.out.println(str.indexOf(abcs));
/*输出结果15*/int lastIndexOf(String str)返回指定字符串在此字符串中最右边出现处的索引
String str abcdeabcdeabcde;
System.out.println(str.lastIndexOf(abcde));
/*输出结果10*/常用方法3
String replace(char oldChar,char newChar)返回一个新的字符串它是通过用newChar替换此字符串中出现的所有oldChar得到的
String str abcd abcd abcd csdn csdn adcc;
System.out.println(str.replace(abcd, csdn));
/*输出结果csdn csdn csdn csdn csdn adcc*/String replaceAll(String regex,String replacement)使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串 boolean matches(String regex)告知此字符串是否匹配给定的正则表达式 String[] split(String regex)根据正则表达式的匹配拆分此字符串 String[] split(String regex,int limit)根据匹配给定的正则表达式来拆分此字符串最多不超过limit个如果超过了剩下的全部都放到最后一个元素中
public static void main(String[] args){String s Hello;s World;System.out.println(s);
}如果对字符串进行拼接操作每次拼接都会构建一个新的String对象既耗时又浪费内存空间而这种操作还不可避免。如何解决这个问题可以通过Java提供的StringBuilder类来解决。
StringBuilder和StringBuffer
StringBuilder是一个可变的字符串类可以把它看成一个容器这里的可变是指StringBuilder对象中的内容是可变的可以对字符串内容进行增删它做字符串拼接的时候是不会创建一个新的对象的 String的内容是不可变的 StringBuilder内容是可变的StringBuffer内容是可变的 StringBuffer常用的方法
StringBuffer append(xxx)进行字符串拼接
StringBuffer bf new StringBuffer(lll);
System.out.println(bf.append(sss));
/*输出结果lllsss*/StringBuffer delete(int start,int end)删除指定位置的内容
StringBuffer bf new StringBuffer(aaaasssscccc);
System.out.println(bf.delete(4, 8));
/*输出结果aaaacccc
不包括bf[8]*/StringBuffer replace(int start,int end,String str)把[start,end]位置替换为str
StringBuffer bf new StringBuffer(aaaasssscccc);
System.out.println(bf.replace(4, 8, bbbb));
/*输出结果aaaabbbbcccc*/StringBuffer bf new StringBuffer(aaaasssscccc);
System.out.println(bf.replace(4, 8, bb));
/*输出结果aaaabbcccc*/StringBuffer insert(int offset,xxx)在指定位置插入xxxStringBuffer reverse()把当前字符序列逆转
String字符串拼接、StringBuffer、StringBuilder三者效率测试
package string;public class StringDemo06 {public static void stringJoin() {long startTime System.currentTimeMillis();String s ;for(int i0;i10000;i) {s s Hello;s s World;s s Hello;}long endTime System.currentTimeMillis();System.out.println(使用String进行字符串拼接用时(毫秒)(endTime - startTime));}public static void stringBufferJoin() {StringBuffer strBuffer new StringBuffer();long startTime System.currentTimeMillis();for(int i0;i10000;i) {strBuffer.append(Hello);strBuffer.append(World);strBuffer.append(Hello);}long endTime System.currentTimeMillis();System.out.println(使用StringBuffer进行字符串拼接用时(毫秒)(endTime - startTime));}public static void stringBuilderJoin() {StringBuilder strBuilder new StringBuilder();long startTime System.currentTimeMillis();for(int i0;i10000;i) {strBuilder.append(Hello);strBuilder.append(World);strBuilder.append(Hello);}long endTime System.currentTimeMillis();System.out.println(使用StringBuilder进行字符串拼接用时(毫秒)(endTime - startTime));}public static void main(String[] args) {//String拼接字符串用时stringJoin();//StringBuffer拼接字符串用时stringBufferJoin();//StringBuilder拼接字符串用时stringBuilderJoin();}
}运行结果 总结StringBuffer与StringBuilder的区别
StringBuffer可变字符序列、效率低、线程安全、多线程操作字符串缓冲区下操作大量数据用StringBufferStringBuilder可变字符序列、效率低、线程不安全、单线程操作字符串缓冲区下操作大量数据用StringBuilder