public class StringBufferTest {
public static void main(String[] args) {
/* 以下为StringBuffer字符串缓冲池对象的一些基本知识
* 1.由于String类的对象一经生成就无法改变,这是由于String类源代码中的byte数组是由Final修饰的,
* 但StringBuffer内的Byte数组没有被Final修饰所以String更偏重处理字符串常量。 StringBuffer
* 一般处理字符串变量。
* 2.由于每次拼接需要产生新的字符串,占用方法区的字符串常量池,因此推荐使用StringBuffer来处理。
* 3.StringBuffer()初始化容量是16,但可以对其进行优化,就是自定义一个合适的容量,减少追加时的
* 自动扩容。这是底层调用了数组拷贝的方法。arrayCopy.
* 4.StringBuffer与StringBuilder的区别是 Buffer是线程安全的,Builder是线程不安全的
*
*
* */
//以下为StringBuffer字符串缓冲池对象的常用方法。
//1.append()方法 追加方法
//StringBuffer可以将字符串变量进行多次变化,并且不用在方法去内存中占用空间。
StringBuffer buffer = new StringBuffer(16);
buffer.append("我是你的爱人").append("&").append(13).append(14.0D).append(true);
//2.toString()方法
// StringBuffer要是想输出必须通过toString方法转换成字符串,然乎才能输出
String str1=buffer.toString();
System.out.println(str1);
//3.insert(插入位置,插入元素) 插入方法 与append类似 不过需要加一个位置参数
StringBuffer buffer2=new StringBuffer("我是中国人");
buffer2.insert(2,"一个");
System.out.println(buffer2.toString());
//4.delete删除某个子串 deleteCharAt删除某个字符 删除方法
buffer2.delete(0,1);
System.out.println(buffer2.toString());
buffer.deleteCharAt(2);
System.out.println(buffer.toString());
//5.reverse() 翻转字符串 顾名思义就是把一个字符串翻转过来
buffer2.reverse();
System.out.println(buffer2.toString());
//6.replace(int start,int end,String str) 字符串的替换
buffer.replace(0,1,"我刘博展");
System.out.println(buffer.toString());
}
}
import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
public class StringTest {
public static void main(String[] args) {
//以下是对String常用方法的练习,共计21个常用方法
//一、字符串的截取方法
//1.CharAt 方法:用来截取字符串单个字符
System.out.println("我是中国人".charAt(2));
//2.substring方法用来截取整个子串
System.out.println("我爱吃肉肉,你爱吃臭臭".substring(3));
System.out.println("我爱吃肉肉,你爱吃臭臭".substring(3,7));
//二、字符串的比较方法
//3.equals方法
String s1="我喜欢你";String s2="我喜欢你";
System.out.println(s1.equals(s2));
//4.equalsIgnoreCase()方法
System.out.println("abCd".equalsIgnoreCase("abcd"));
//5.compareTo()方法
//按胜负比,一匹配成功就不比了,-1就是不匹配,0就是匹配成功,正数就是相差多少
int temp="acd".compareTo("acdq");
System.out.println(temp);
int temp1="acd".compareTo("ac");
System.out.println(temp1);
//6.compareToIgnoreCase() 方法
System.out.println("SAve".compareToIgnoreCase("save"));
//三、判断是否以某个子串开头或结尾的方法
//7.endsWith()方法 用来判断字符串是否以某个子串结尾
System.out.println("你爱我啊我爱你".endsWith("我爱你"));
//8.startsWith()方法 用来判断字符串是否以某个子串开头
System.out.println("我是刘博展".startsWith("我是"));
//四、求字符串长度的方法
//9.length()方法 用来判断字符串的长度
System.out.println("我是刘博展".length());
//10.isEmpty()方法 用来判断字符串是否为空
System.out.println("www".isEmpty());
//五、字符串转换大小写的方法
//11.toLowwerCase()转换为小写
System.out.println("WWW.".toLowerCase());
//12.toUpperCase()转换为大写
System.out.println("qaq".toUpperCase());
//六.清除字符串前面和后面空格的方法
//13.trim().
System.out.println(" 我是你大哥 ".trim());
//七.将字符串变为数组的方法
//14.toCharArray()
char []ch="我是java工程师".toCharArray();
for(int i=0;i<ch.length;i++){
System.out.print(ch[i]+" ");
}
//15.getBytes()将字符串变为字节数组
byte []byte1="abcde".getBytes();
for(int i=0;i<byte1.length;i++){
System.out.print(byte1[i]+" ");
}
//八.将字符数组复制到字符串的方法
//16.copyValueOf(char []data)
String s3=new String(),s4=new String();
s3=s3.copyValueOf(ch);
System.out.println(s3);
s4=s4.copyValueOf(ch,1,3);
System.out.println(s4);
//九.字符串的连接
//17.concat() 这点其实很容易迷惑,不是String对象不能改变么?其实底层调用了StringBuffer的append方法
System.out.println("我爱".concat("你"));
//十.字符串的检索,用来检索子串或字符的第一次或最后一次出现位置
//18.indexOf()从前往后、lastIndexOf()从后往前
String ss="我的棉花糖真好吃呀棉!";
System.out.print(ss.indexOf("棉花")+" ");
System.out.print(ss.indexOf('真')+" ");
System.out.print(ss.lastIndexOf("棉")+" ");
//十一.字符串的拆分
//19.String [] split("以什么符号拆分")方法 将字符串以什么符号拆分为字符串数组
String date="1988%02%01";
String []dates=date.split("%");
for(int i=0;i<dates.length;i++){
System.out.print(dates[i]+" ");
}
//十二、字符串的替换
//20.原字符串.replace(原字符串子串,改变后的子串)方法
String s5="http://baidu.com".replace("http://","aaa");
System.out.println(s5);
//十三.将其他所有数据类型都转为字符串
//21.valueOf()方法 静态方法可直接用类名调
System.out.println(String.valueOf(100));
System.out.println(String.valueOf(200D));
System.out.println(String.valueOf(100<101));
}
}