String,StringBuffer和StringBuilder
来源:互联网 发布:知乎 美国经典电影 编辑:程序博客网 时间:2024/06/05 08:58
一. String常用方法:
public class StringDemo { public static void main(String[] args) { /**1.获取**/ String s1 = "abcdabcd"; //1.1 字符串长度 pri(s1.length()); //8 //1.2 指定索引处的字符 pri(s1.charAt(1)); //b //1.3 字符(串)第一次出现的位置 pri(s1.indexOf("bc")); //1 //1.4 从某个索引开始,字符(串)第一次出现的位置 pri(s1.indexOf("bc", 3)); //5 //1.5 逆序查看字符(串)第一次出现的位置 pri(s1.lastIndexOf("bc")); //5 //1.6 从某个索引开始,逆序查看字符(串)第一次出现的位置 pri(s1.lastIndexOf("bc", 4)); //1 //1.7 获取字符串中的一部分(包含头不包含尾) pri(s1.substring(2, 5)); //cda /**2.判断**/ String s2 = "StringDemo.java"; //2.1 字符串是否包含某个子串 pri(s2.contains("Demo")); //true //2.2 字符串是否为空 pri(s2.isEmpty()); //false //2.3 字符串是否以..开始 pri(s2.startsWith("String")); //true //2.3 字符串是否以..结束 pri(s2.endsWith(".java")); //true /**3.转换**/ //3.1 字符数组转换为字符串 char[] arr = {'a','b','c','d','e','f'}; String s3 = new String(arr,2,3); //构造方法 pri(s3.copyValueOf(arr, 2, 3)); //静态方法 pri(s3); //cde //3.2字符串转换为字符数组 char[] arr2 = s3.toCharArray(); for(int i = 0;i<arr2.length;i++) pri(arr2[i]); //3.3 字节数组转成字符串 //String s = new String(byte[],offset,count) //3.4 字符串转成字节数组 //byte[] b = s.getBytes(); /**4.替换**/ String s4 = "hello java"; pri(s4.replace("java", "world")); //hello world /**5.切割**/ String s5 = "张三,李四,王五"; String[] s = s5.split(","); for(int i = 0 ;i<s.length; i++) pri(s[i]); /**6.字符串转成大写或小写**/ pri(s4.toUpperCase()); //HELLO JAVA pri(s4.toLowerCase()); //hello java /**7.去除两端的空格**/ String s6 = " hello world "; pri(s6.trim()); //hello world /**8.两个字符串进行自然顺序比较,返回第一个不相等的字符的ASCII码的差(前减后)**/ String s7 = "acc"; String s8 = "aaa"; pri(s7.compareTo(s8)); //2 } public static void pri(Object obj){ System.out.println(obj); }}
二. StringBuffer常用方法:
public class StringBufferDemo { public static void main(String[] args) { StringBuffer sb=new StringBuffer("abcde"); /**1.添加**/ //1.1 StringBuffer append():将指定数据作为参数添加到已有数据结尾处 sb.append("fgh"); //abcdefgh //1.2 StringBuffer insert(index,data):将数据插入到指定index位置 sb.insert(2,"fgh"); //abfghcde /**2.删除**/ //2.1 StringBuffer delete(start,end):删除缓冲区的一段数据 sb.delete(2, 4); //abe //2.2 StringBuffer deleteCharAt(index):删除指定位置的字符 sb.deleteCharAt(2); //abde /**3.获取**/ //3.1 char charAt(index) System.out.println(sb.charAt(2)); //c //3.2 int indexOf(String str) System.out.println(sb.indexOf("c")); //2 //3.3 String substring(start,end) System.out.println(sb.substring(2,5)); //cde /**4.修改**/ //4.1 StringBuffer replace(start,end,str) System.out.println(sb.replace(2,4,"hhh")); //abhhhe //4.2 void setCharAt(index,ch) sb.setCharAt(2,'h'); //abhde /**5.数据存到字符数组**/ //getChars(srcBegin, srcEnd, dst, dstBegin) char[] str=new char[5]; sb.getChars(2, 5, str, 0); //cde }}
三. String,StringBuffer,StringBuilder对比
- 执行速度上:StringBuilder > StringBuffer > String
- String类是不可变类,一旦创建,无法修改,每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象
- StringBuffer是可变类,任何对它所指代的字符串的改变都不会产生新的对象
StringBuffer和StringBuilder的原理和操作基本相同,区别在于StringBuffer是线程同步的,StringBuilder是线程不同步,StringBuffer安全性更高,但加锁解锁导致其速度慢于StringBuilder
对于三者使用的总结: 1.如果要操作少量的数据用 - String
2.单线程操作字符串缓冲区 下操作大量数据 - StringBuilder
3.多线程操作字符串缓冲区 下操作大量数据 - StringBuffer
阅读全文
0 0
- String 、StringBuffer 和 StringBuilder
- String、StringBuffer和StringBuilder
- String、StringBuffer和StringBuilder
- String、StringBuffer和StringBuilder
- String、StringBuffer和StringBuilder
- String Stringbuffer和StringBuilder
- String ,StringBuffer和StringBuilder
- String、StringBuffer和StringBuilder
- String、StringBuffer和StringBuilder
- String StringBuffer和StringBuilder
- String、StringBuffer和StringBuilder
- String和StringBuffer,StringBuilder
- String、StringBuffer和StringBuilder
- String, StringBuffer和 StringBuilder
- String、StringBuffer和StringBuilder
- String、StringBuilder和StringBuffer
- StringBuilder、StringBuffer和String:
- String、StringBuffer和StringBuilder
- uva116-Unidirectional TSP (动态规划,多段图)
- boost bind使用指南
- ie下 input file 双击问题
- 关于9.png(九妹图)的制作以及作用
- 汇编中一些简单的知识
- String,StringBuffer和StringBuilder
- spark学习起步(一):基本概念
- JTable 的排序+过滤+渲染
- 曾经觉得学习晦涩难懂的我是如何爱上linux的
- 浅谈javaweb三大框架和MVC设计模式
- Spring 注解实例--@Autowired 注入
- POJ
- vb.net 教程 5-16 图像处理之ImageAttributes 类2 颜色矩阵4
- Java多线程