String、StringBuffer、StrigBuilder

来源:互联网 发布:sql isnull用法 编辑:程序博客网 时间:2024/06/05 06:56
  1. 字符串一旦被创建就不会被改变
  2. String a=“abc”,String a1=“abc” a==a1,结果为true。这是因为“abc”会被存放在常量池中,a1在创建时候会首先去常量池中找,有就直接引用,没有就创建,所以a和a1指向的是同一个地址值,但是如果以这种方式创建 String a1=new String(“abc”),那么a==a1结果为false,这种方式的对象不会在常量池中,而是在堆内存中。
  3. String类中的equals复写了object中的equals,不在是比较地址值,建立了自己判断字符串对象是否相同的依据,其实就是比较字符串内容
  4. String s = new String ()的构造函数可以将字节数组,字符数组整个或者一部分变成字符串。
  5. .length()获取字符串长度
    .charAt(int index)获取相应索引处的字符
    .indexOf(int ch)根据字符获取在字符串中第一次出现的位置(之所以参数为int类型是可以传 字符也可以传int)
    .indexOf(int ch,int fromIndex)从指定位置进行ch的查找第一次出现位置
    .indexOf(String str,fromIndex)
    .lastIndexOf(int ch)从后边获取相应索引处的字符
    .lastIndexOf(int ch,int fromIndex)从指定位置进行ch的查找第一次出现位置
    .lastIndexOf(String str,fromIndex)
    .subString(int beginIndex)从指定位置开始到结束位置的子字符串
    .subString(int beginIndex, int endIndex)从指定位置开始到指定位置结束的子字符串
  6. 转换
    .split()根据给定正则表达式的匹配拆分此字符串为字符串数组(如“,”把逗号切掉)
    . toCharArray()将此字符串转化为字符数组。
    .getBytes() 讲字符串转化为字节数组
    .toUpperCase()大写
    .toLowerCase()小写
    .replace(char oldch, char newch)通过用newChar 替换此字符串中出现的所有oldChar得到新的字符串
    .replace(String oldstr, String newstr)
    .trim()将字符串两端的空格去除
    .concat()将字符串进行连接
    .valueOf( 基本类型),将基本类型转化为字符串
    .compareTo()比较两个字符串的大小按照字典顺序,返回,如果参数字符串等于此字符串,则返回值0,如果此字符串按字典顺序小于字符串参数,则返回一个小于0的值,如果是大于则返回一个大于0的值
  7. StringBuffer特点:1,长度是可变的,默认长度是16。2,可以存储不同类型数据3,最终要转换成字符串进行使用4,可以对字符串进行修改
  8. .append(不同类型参数)添加
    . insert(不同类型)自定位置插入任意 数据
    . delete(int start,int end)删除方法从开始位置到结束位置,包含头,不包含尾
    .deleteCharAt() 删除指定的位置
    .charAt(int index)获取相应索引处的字符
    .indexOf(String str)在字符串中第一次出现的位置
    .lastIndexOf(String str)在字符串中最后一次出现的位置
    .replace(int start, int end, String str)用str替换从start开始到end结束的字符串,不包括结尾
    .void setCharAt(int index,char cha )根据指定位置替换一个字符
    .setLength()设置长度
    .reverse()翻转
  9. StringBuilder和StringBuffer的区别,前者不保证线程安全,后者保证安全。后者怎么保证安全的,是通如在添加和删除方法内添加同步代码块,因为两个方法在多线程容易出现线程不安全,但是如果单线程时候就会效率慢,所以jdk1.5出现StringBuilder。
原创粉丝点击