裕-String、StringBuffer、StringBuilder

博客介绍了Java中的String、StringBuffer和StringBuilder。其中,StringBuffer和StringBuilder内存可自动扩容,常用于字符串拼接,且StringBuilder的功能与StringBuffer完全一致。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

String、StringBuffer、StringBuilder

String:

/*----------------------------------------------创建--------------------------------------------------*/
String str1 = new String("abc");
String str2 = new String("abc");
System.out.println(str1 == str2); //str1和str2的内存地址不相同
System.out.println(str1.equals(str2)); //str1和str2的内容相同

String str3 = "abc";
String str4 = "abc";		
System.out.println(str3 == str4); //str3和str4的内存地址相同
System.out.println(str3.equals(str4)); //str3和str4的内容相同

/*----------------------------------------------获得新的字符串--------------------------------------------------*/
/*
	public String subString(int beginIndex) 
	public String subString(int beginIndex,int endIndex) 
	获得从beginIndex开始到(endIndex)结束的子字符串。
	( 包括beginIndex的字符,不包含end的字符)
*/
System.out.println("abcd".substring(1)); //bcd
System.out.println("abcd".substring(1, 3)); //bc

/*
	public String toLowerCase()  
	把字符串中的英文字符全部转换为小写字符,返回值为转换后的新的字符串。
	public String toUpperCase() 
	把字符串中的英文字符全部转换为大写字符,返回值为转换后的新的字符串。
*/
System.out.println("abAB".toLowerCase());
System.out.println("abAB".toUpperCase());

/*
	public String trim()  
	把字符串中的首尾的空白字符去掉
*/
System.out.println("  aa   bb   ".trim()); //"aa  bb"

/*
	public String replace(CharSequence target,  CharSequence replacement) 
	使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串
	public String replace(char oldChar, char newChar) 
	返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
	
	public String replaceAll(String regex, String replacement) 
	使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
	public replaceFirst(String regex, String replacement)
	使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。
*/
System.out.println("aabbccaa".replace("aa", "e")); //全部替换
System.out.println("aabbccaa".replace('a', 'e')); //全部替换		
System.out.println("aa123bb".replaceAll("\\d", "e"));// \d就是表示任意的一个数字,语法叫做正则表达式
System.out.println("aa123bb".replaceFirst("\\d", "e"));

/*
	public String[] split(String sign)	
	返回一个数组,该数组由目标字符串根据sign拆分得到
*/
String str = "aa,,bb,,cc";
String[] arr = str.split(",,");
for (String item : arr) {       //遍历
	System.out.println(item);
}

/*----------------------------------------------字符串比较--------------------------------------------------*/
/*
	boolean equals(Object anObject)
	将此字符串与指定的对象比较。注意此时比较的是内容是否相等。
	boolean equalsIgnoreCase(String anotherString)
	将此 String 与另一个 String 比较,不考虑大小写。
*/
System.out.println("abc".equals("Abc")); //false
System.out.println("abc".equalsIgnoreCase("Abc")); //true

/*
	boolean startsWith(String value) 
	检查一个字符串是否以参数字符串开始
	boolean endsWith(String value)
	检查一个字符串是否以参数个字符串结束
*/
System.out.println("abc.png".startsWith("ab")); //true
System.out.println("abc.png".endsWith(".png")); //true
		
/*
	文件名相关案例
*/
String fileName = "a.b.c.txt";
// 获得文件的后缀名(扩展名)
int index = fileName.lastIndexOf('.');
String suffix = fileName.substring(index);
System.out.println(suffix);
// 判断文件格式,也就是判断文件的后缀名
// 判断fileName是否是文本文件
boolean ok = fileName.endsWith(".txt");
		
/*
	compareTo(String s)		
	当前字符串与目标字符串s按字典序比较.
	如果当前字符串与s相同返回0,如果大于s返回正数,否则返回负数
*/	
System.out.println("aa".compareTo("a")); 

/*----------------------------------------------字符串查找--------------------------------------------------*/
/*
	public int length()
	计算字符串长度
*/
System.out.println("abc".length());
System.out.println("".length());  //""表示空串,长度为0的字符串,而不是null

/*
	public int indexOf(int ch)
	返回指定字符ch在此字符串中第一次出现处的索引值;如果未出现,则返回 -1。 
	public int indexOf(String str)
	返回第一次出现的指定子字符串str在此字符串中的索引值;如果未出现,则返回 -1。 
	
	public int lastIndexOf(int ch) 
	返回最后一次出现的指定字符在此字符串中的索引值;如果未出现,则返回 -1。 
	public int lastIndexOf(String str)
	返回最后一次出现的指定子字符串str在此字符串中的索引值;如果未出现,则返回 -1。 
*/
System.out.println("abc".indexOf('b'));
System.out.println("abc".indexOf('d')); //返回 -1
System.out.println("abc".indexOf("ab")); //0
System.out.println("abcabc".lastIndexOf("ab")); //3

/*
	public char charAt(int index)
	从指定索引index处提取单个字符,索引中的值必须为非负
*/
char c = "abc".charAt(2);
System.out.println(c);
	
/*
	public char[] toCharArray()
	将字符串拆分成字符数组
*/
char[] arr = "abc".toCharArray();
for (char c : arr) {
	System.out.println(c);
}

/*
	public boolean contains(String str)
	判断字符串是否包含参数的子串
*/
System.out.println("abc".contains("bcb"));

StringBuffer、StringBuilder:

特点:内存可以自动扩容,一般用于字符串拼接
StringBuilder 字符串缓冲,用于和StringBuffer完全一致

----
StringBuffer线程安全的速度相对较慢适用于多线程
StringBuilder线程不安全的速度相对较快适用于单线程
StringBuffer buffer1 = new StringBuffer(); //创建空的缓冲区
buffer1.append("abc");
buffer1.append(true);
buffer1.append(100); // 向缓冲区添加/拼接字符串
String str = buffer1.toString(); // 从缓冲区提取字符串
System.out.println(str);

String str = new StringBuffer().append("abc").append("123").toString(); // 链式操作
System.out.println(str);

/*------------------------------------------StringBuffer 其他方法-----------------------------------------*/
/*
	StringBuffer insert(int offset, String str)
	将字符串str插入此字符序列指定位置中
*/
StringBuffer buffer = new StringBuffer();
buffer.append("aabbcc");
buffer.insert(3, "ee"); // aabeebcc
String str = buffer.toString();
System.out.println(str);
		
/*
	int length( )
	确定 StringBuffer 对象的长度
*/
StringBuffer buffer = new StringBuffer();
buffer.append("aabbcc");
System.out.println(buffer.length());
		
/*
	void setCharAt(int pos, char ch)
	使用 ch 指定的新值设置 pos 指定的位置上的字符
*/
StringBuffer buffer = new StringBuffer();
buffer.append("aabbcc");
buffer.setCharAt(3, 'e'); //aabecc
System.out.println(buffer);

/*
	StringBuffer reverse( )
	反转字符串
*/
StringBuffer buffer = new StringBuffer();
buffer.append("aabbcc");
buffer.reverse();
System.out.println(buffer);
		
/*
	StringBuffer delete(int start, int end)
	删除调用对象中从 start 位置开始直到 end 指定的索引 – 1 位置的字符序列
*/
StringBuffer buffer = new StringBuffer();
buffer.append("aabbcc");
buffer.delete(2, 4); //aacc
System.out.println(buffer);

/*
	StringBuffer deleteCharAt(int pos)
	将删除 pos 指定的索引处的字符
*/
StringBuffer buffer = new StringBuffer();
buffer.append("aabbcc");
buffer.deleteCharAt(4);
System.out.println(buffer);

/*
	StringBuffer replace(int start, int end, String s)	
	使用一组字符替换另一组字符。将用替换字符串从 start 指定的位置开始替换,直到 end 指定的位置结束
*/
StringBuffer buffer = new StringBuffer();
buffer.append("aabbcc");
buffer.replace(2, 4, "ee");
System.out.println(buffer);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值