String;StringBuffer;StringBuilder用法和区别
来源:互联网 发布:淘宝怎么做到包邮 编辑:程序博客网 时间:2024/06/05 18:41
1,String类,内容一旦声明则不可变,如果变,则会改变String的引用地址,即创建一个新的类,比如:
1 String s = "1234qwe";
2 s = s+1;
3 System.out.print(s);// result : 1234qwe1
一开始s指向1234qwe,当执行第二行代码,之前对象s并没有变化,所以我们说String类型是不可改变的对象了,由于这种机制,每当用String操作字符串时,实际上是在不断的创建新的对象,而原来的对象就会变为垃圾被GC回收掉,可想而知这样执行效率会有多低。
2, 而StringBuffer与StringBuilder就不一样了,他们是字符串变量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在一个对象上操作的,这样就不会像String一样创建一些而外的对象进行操作了,当然速度就快了。
因此,三者相比,从效率上来看StringBuilder > StringBuffer > String
3,StringBuilder与 StringBuffer的区别StringBuilder:线程非安全的
StringBuffer:线程安全的
当我们在字符串缓冲区被多个线程使用是,JVM不能保证StringBuilder的操作是安全的,虽然他的速度最快,但是可以保证StringBuffer是可以正确操作的。当然大多数情况下就是我们是在单线程下进行的操作,所以大多数情况下是建议用StringBuilder而不用StringBuffer的,就是速度的原因。
如果要操作少量的数据用 = String; 单线程操作字符串缓冲区 下操作大量数据 = StringBuilder;多线程操作字符串缓冲区 下操作大量数据 = StringBuffer;
4,String 类常用的一些用法:
- 1, * public char[] toCharArray()将一个字符串变为字符数组
- 2, * public byte[] getBytes() 将一个字符串变为字节数组
- */
- String strChar = "Hello"; // 定义一个字符串
- char cStr[] = strChar.toCharArray(); //将Hello这个字符串变为一个字符数组
- byte bStr[] = strChar.getBytes(); //将Hello这个字符串变为一个字节数组
- for(int i=0;i<cStr.length;i++){ //循环输出这个字符数组
- System.out.print(cStr[i]+"、");
- }
- System.out.println();
- for(int j=0;j<bStr.length;j++){ //循环输出这个字节数组
- System.out.print(bStr[j]+"、");
- }
- System.out.println();
- System.out.println("--------------------------------------------");
- /*
- 3, * public String(char[] value)将全部的字符数组变为一个字符串
- 4, * public String(char[] value, int offset, int count)将指定范围内(部分)的字符数组变为字符串,offset是开始点,count是长度
- 5, * public String(byte[] bytes)将全部的字节数组变为一个字符串
- 6, * public String(byte[] bytes, int offset, int length)将指定范围内(部分)的字节数组变为字符串,offset是开始点,length是长度
- */
- char stringChar[] = {'I',' ','L','O','V','E',' ','Y','O','U','!'}; //定义一个字符数组
- byte b[] = {'1','2','3','4'};
- String strOne = new String (stringChar); //将字符数组变为字符串
- String strTwo = new String (stringChar,2,8); //将指定范围的字符数组变为字符串
- String bStrOne = new String(b); //将字节数组变为字符串
- String bStrTwo = new String(b,2,2); //将指定范围的字节数组变为字符串
- System.out.println("strOne的值是:"+strOne);
- System.out.println("strTwo的值是:"+strTwo);
- System.out.println("bStrOne的值是:"+bStrOne);
- System.out.println("bStrTwo的值是:"+bStrTwo);
- System.out.println("--------------------------------------------");
- /*
- 7, * public char charAt(int index)从一个字符串中取出指定位置的字符。
- */
- String inStr = "charAt";
- char inChar = inStr.charAt(2); //从指定的字符串中取出指定位置的字符
- System.out.println("位置为2的地方的字符是:"+inChar);
- System.out.println("--------------------------------------------");
- /*
- 8, * public int length()取得字符串的长度
- */
- String strLength = "strLength";
- int sLength = strLength.length(); //取得字符串的长度
- System.out.println("字符串strLength的长度是:"+sLength);
- System.out.println("--------------------------------------------");
- /*
- 9, * 查找指定的字符串是否存在
- * public int indexOf(String str)从头开始查找指定字符串是否存在,返回int类型,若查找不到返回-1
- * public int indexOf(String str,int fromIndex)从指定位置开始查找指定的字符串是否存在,返回int类型,若查找不到就返回-1
- */
- String indexOfStr = "abcdefgcdhi";
- System.out.println(indexOfStr.indexOf("cd")); //从头开始查找字符串“cd”返回2,也说明是查找到的第一个符合条件的位置。
- System.out.println(indexOfStr.indexOf("c",3)); //从第四个元素开始查找字符串“cd”
- System.out.println(indexOfStr.indexOf("x")); //没有查找到,返回-1
- System.out.println("--------------------------------------------");
- /*
- 10 * public String trim()去掉字符串中左右的空格,但中间的空格不会被去掉
- */
- String strTrim = " Hello Worldsd ";
- System.out.println(strTrim.trim()); //去掉空格
- System.out.println("--------------------------------------------");
- /*
- 11, * 字符截取:从一个字符串中取出部分内容
- * substring(int beginIndex)从指定位置开始截取至字符串结尾
- * substring(int beginIndex, int endIndex)截取指定范围的字符串(开始位置和结束为止),不包括结束位置的字符
- */
- String subStringStr = "I amLucy!!!!!";
- System.out.println(subStringStr.substring(2));
- System.out.println(subStringStr.substring(2,7)); //不包括结束位置的字符
- System.out.println("--------------------------------------------");
- /*
- 12, * public String[] split(String regex)拆分字符串,以某一个字符串作为拆分点
- */
- String spliteStr = "Hello Lily!";
- String spliteS[] = spliteStr.split(" ");
- for(int x=0;x<spliteS.length;x++){
- System.out.println(spliteS[x]);
- }
- System.out.println("--------------------------------------------");
- /*
- 13, * public String toLowerCase()将字符串字符都变为小写
- 14,* public String toUpperCase()将字符串字符都变为大写
- */
- String lowerUpper = "HelloWorld!";
- System.out.println(lowerUpper.toUpperCase());
- System.out.println(lowerUpper.toLowerCase());
- System.out.println("--------------------------------------------");
- /*
- 15,* 判断是否以指定的字符串开头或者结尾
- * public boolean startsWith(String prefix)判断是否以指定的字符串开头
- * public boolean endsWith(String suffix) 判断是否以指定的字符串结尾
- */
- String str1 = "Hello,cat";
- boolean s1 = str1.startsWith("He");
- boolean s2 = str1.endsWith("cat");
- System.out.println(s1+"\t"+s2);
- System.out.println("--------------------------------------------");
- /*
- 16, * 判断两个字符串是否相等
- * public boolean equals(Object anObject) 区分大小写判断两个字符串是否相等
- * public boolean equalsIgnoreCase(String anotherString) 不区分大小写判断两个字符串是否相等
- */
- String str11 = "Hello";
- String str22 = "hello";
- System.out.println("区分大小写判断两个字符串是否相等的结果是:"+str11.equals(str22));
- System.out.println("不区分大小写判断两个字符串是否相等的结果是:"+str11.equalsIgnoreCase(str22));
- System.out.println("--------------------------------------------");
- /*
- 17* 字符串替换功能
- * public String replaceAll(String regex,String replacement)将指定字符regex替换成指定的字符replacement
- */
- String strReplace = "Hello";
- System.out.println("替换后的结果是:"+strReplace.replaceAll("l","x"));
- public class UsingStringBuffer {
- /**
- 1, * 查找匹配字符串
- */
- public static void testFindStr() {
- StringBuffer sb = new StringBuffer();
- sb.append("This is a StringBuffer");
- // 返回子字符串在字符串中最先出现的位置,如果不存在,返回负数
- System.out.println("sb.indexOf(\"is\")=" + sb.indexOf("is"));
- // 给indexOf方法设置参数,指定匹配的起始位置
- System.out.println("sb.indexOf(\"is\")=" + sb.indexOf("is", 3));
- // 返回子字符串在字符串中最后出现的位置,如果不存在,返回负数
- System.out.println("sb.lastIndexOf(\"is\") = " + sb.lastIndexOf("is"));
- // 给lastIndexOf方法设置参数,指定匹配的结束位置
- System.out.println("sb.lastIndexOf(\"is\", 1) = "
- + sb.lastIndexOf("is", 1));
- }
- /**
- 2, * 截取字符串
- */
- public static void testSubStr() {
- StringBuffer sb = new StringBuffer();
- sb.append("This is a StringBuffer");
- // 默认的终止位置为字符串的末尾
- System.out.print("sb.substring(4)=" + sb.substring(4));
- // substring方法截取字符串,可以指定截取的起始位置和终止位置
- System.out.print("sb.substring(4,9)=" + sb.substring(4, 9));
- }
- /**
- 3, * 获取字符串中某个位置的字符
- */
- public static void testCharAtStr() {
- StringBuffer sb = new StringBuffer("This is a StringBuffer");
- System.out.println(sb.charAt(sb.length() - 1));
- }
- /**
- 4, * 添加各种类型的数据到字符串的尾部
- */
- public static void testAppend() {
- StringBuffer sb = new StringBuffer("This is a StringBuffer!");
- sb.append(1.23f);
- System.out.println(sb.toString());
- }
- /**
- 5,* 删除字符串中的数据
- */
- public static void testDelete() {
- StringBuffer sb = new StringBuffer("This is a StringBuffer!");
- sb.delete(0, 5);
- sb.deleteCharAt(sb.length() - 1);
- System.out.println(sb.toString());
- }
- /**
- 6, * 向字符串中插入各种类型的数据
- */
- public static void testInsert() {
- StringBuffer sb = new StringBuffer("This is a StringBuffer!");
- // 能够在指定位置插入字符、字符数组、字符串以及各种数字和布尔值
- sb.insert(2, 'W');
- sb.insert(3, new char[] { 'A', 'B', 'C' });
- sb.insert(8, "abc");
- sb.insert(2, 3);
- sb.insert(3, 2.3f);
- sb.insert(6, 3.75d);
- sb.insert(5, 9843L);
- sb.insert(2, true);
- System.out.println("testInsert: " + sb.toString());
- }
- /**
- 7, * 替换字符串中的某些字符
- */
- public static void testReplace() {
- StringBuffer sb = new StringBuffer("This is a StringBuffer!");
- // 将字符串中某段字符替换成另一个字符串
- sb.replace(10, sb.length(), "Integer");
- System.out.println("testReplace: " + sb.toString());
- }
- /**
- 8,* 将字符串倒序
- */
- public static void reverseStr() {
- StringBuffer sb = new StringBuffer("This is a StringBuffer!");
- System.out.println(sb.reverse()); // reverse方法将字符串倒序
- }
- }
- String;StringBuffer;StringBuilder用法和区别
- String, StringBuffer 和 StringBuilder区别
- String、StringBuffer和StringBuilder 区别
- String ,StringBuffer 和 StringBuilder 区别
- String , StringBuffer 和 StringBuilder 区别
- String StringBuffer 和StringBuilder区别
- 【String,StringBuffer和StringBuilder区别】
- String、StringBuffer和StringBuilder区别
- StringBuilder、StringBuffer和String区别
- String、StringBuilder和StringBuffer区别
- string.StringBuilder和StringBuffer区别
- String、StringBuffer和StringBuilder区别
- String、StringBuffer和StringBuilder 区别
- String和StringBuffer、StringBuilder区别
- Java String,StringBuilder和StringBuffer的用法和区别
- Java中String ,StringBuffer和StringBuilder的区别和用法
- String,StringBuffer与StringBuilder的区别和用法
- String的用法、StringBuffer和StringBuilder之间的区别
- C# 连接SQL数据库以及操作数据库
- 华为CE6870固件升级 &更新补丁操作
- python3 Queue详解
- javamail邮件开发之带图片 + 附件
- VGA GPU passthrough qemu虚拟桌面pci穿透--Shell脚本检测与关机
- String;StringBuffer;StringBuilder用法和区别
- RDD转换为DataFrame案例
- 转一发Lucas定理
- 查看建立的bond的状态
- selenium+testng入引Log4j日志详解
- hdu 6121 Build a tree
- <a>标签点击一个链接
- Uva 11796 Dog Distance(几何+相对运动)
- 刷题——Allowance POJ