String类常用方法

来源:互联网 发布:学软件编程有前途吗 编辑:程序博客网 时间:2024/05/17 04:39

String类
String表示字符串常量,一旦定义无法改变,
如String s = “hello”;
s = “world”;
java中默认字符串常量为String对象
hello和world存在于方法区的常量池中,s中存储的实际上是String对象的引用的地址
以上两句改变的不是s的值,而是s指向的String对象的引用的地址

构造器    String(byte[] bytes)       通过使用平台的默认字符集解码指定的 byte 数组,构造一个新的 String。    String(byte[] bytes, int offset, int length, Charset charset)       通过使用指定的 charset 解码指定的 byte 子数组,构造一个新的 String。    String(StringBuffer buffer)       分配一个新的字符串,它包含字符串缓冲区参数中当前包含的字符序列。    String(StringBuilder builder)       分配一个新的字符串,它包含字符串生成器参数中当前包含的字符序列。方法    返回值类型   方法    char        charAt(int index)               //返回指定索引处的char值,index从0开始                    例:String s = "你好,很高兴ANBD见到你";                   char c = s.charAt(3);                   System.out.println(c);  //结果为  很    int         compareTo(String anotherString) //按字典顺序比较两个字符串    int         compareToIgnoreCase(String str) //不考虑大小写比较两个字符串    String      concat(String str)              //将指定字符串连接到此字符串的结尾,                     例:str1.concat(str2)    boolean     contains(CharSequence s)        //当且仅当此字符串包含指定的 char 值序列时,返回 true,                    例:char[] ch = {'a','b','c','d'};                    String m = String.copyValueOf(ch);                    结果 m="abcd"    boolean     startsWith(String prefix)       //测试此字符串是否以指定的前缀开始    boolean     endswith(String suffix)         //测试此字符串是否以指定的后缀结束                    例:String s6 = "helloWorld.java";                    System.out.println(s6.endsWith(".java"));                    结果:true    boolean     equals(Object anObject)         //将此字符串与指定的对象比较                    equals常用于字符串或是对象引用所指向的值的比较    boolean     equalsIgnoreCase(String anotherString)                 //将此 String 与另一个 String 比较,不考虑大小写    int         hashCode()                          //返回此字符串的哈希码    int         indexOf(String str)                 //返回指定字符串在该字符串中第一次出现的位置索引                    例:String s1 = "你好,很高兴ANBD见到你好";                    System.out.println(s1.indexOf("你好"));                    结果: 0    int         lastIndexOf(char ch)                //返回指定字符在该字符串中最后一次出现的索引    int         lastIndexOf(String str)             //返回指定字符串在该字符串中最后一次出现的索引    byte[]      getBytes()                          //将该字符串编码为byte序列,并存储到新的byte数组中    int         length()                            //返回此字符串的长度    boolean     isEmpty()                           //当且仅当length()为0时返回true    boolean     matches(String regex)               //判断此字符串是否匹配给定的正则表达式    String      replace(char oldChar,char newChar)  //返回一个新的字符串,它是通过用newChar替换此字符串中出现的所有oldChar得到的    char[]      toCharArray()                       //将该字符串转换为一个新的字符数组    String      toLowerCase()                       //将该字符串中的所有大写都转换成小写    String      toString()                          //返回该字符串本身    String      trim()                              //返回该字符串副本,去除开头的空白和字符串后面的空白    String      substring(int beginIndex)           //从beginIndex位置开始截取字符串    String[]    split(String regex)                 //根据给定的正则表达式来拆分此字符串,获得一个字符串数组    static String  valueOf(基本数据类型)          //返回该参数的字符串形式,                    例:String.valueOf(20.5),结果为20.5(String)                    参数中的"基本数据类型"指的是byte,short,int,long,float,                        double,boolean,char,包括字    符数组char[]以及Object对象                   其中byte,short会被默认为int型,需要时可以强转                    该方法常和BigDecimal一起使用解决double类型计算数据精度丢失问题,保证数据的精确性

StringBuffer类

线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。

可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。

StringBuffer 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符添加或插入到字符串缓冲区中。append 方法始终将这些字符添加到缓冲区的末端;而 insert 方法则在指定的点添加字符
例:
String s = “你好,我好”;
StringBuffer sb = new StringBuffer(s);
sb.append(“,大家好”);
System.out.println(sb);
结果是 你好,我好,大家好

StringBuffer与StringBuilder在进行字符串拼接时,不会新创建引用变量,比String节约时间及内存
需要做大量字符串拼接使用 StringBuffer 较String效率高
在单线程时StringBuffer与StringBuilder效率相同, StringBuffer线程同步,StringBuilder线程不同步,在多线程时,StringBuilder效率高但是不安全。

原创粉丝点击