黑马程序员——String、StringBuffer、StringBuilder三兄弟

时间:2022-02-13 14:30:02
------- android培训java培训、期待与您交流! ----------

String类

    java.lang.String
    String str = "abc";//一个对象
    String str1 = new String("abc");//两个对象
    String str2 = "abc";
    str == str2;// true;
    str == str1;// false;
常见操作:
1.获取
    1.1字符串中包含的字符数,也就是字符串的长度
        int lenght();// 数组中也有长度  .length;此为属性
    1.2根据位置获取位置上某个字符。
        char charAt(int index);
    1.3根据字符获取该字符在字符串中的位置
        int indexOf(int ch);//返回的是ch在字符串中第一次出现的位置  ch为字符
        int indexOf(int ch,int fromIndex);// 从fromIndex位置开始,获取ch出现的位置。如果没有找到返回-1
        
        int indexOf(String str);//返回的是str在字符串中第一次出现的位置
        int indexOf(String str,int fromIndex);// 从fromIndex位置开始,获取str出现的位置。如果没有找到返回-1
        
        int lastindexOf(int ch);// 返回ch在字符串中最后一个出现的位置。
        
2.判断
    2.1字符串中是否包含一个子串。
        boolean contains(CharSequence cs);//CharSequence是String跟StringBuffer、StringBuilder的接口
        特殊之处:indexOf(str);可以索引str第一次出现位置,如果返回-1,表示该str不在字符串中存在。
        所以,也可以用于对指定判断是否包含。
        if(str.indexOf("aa")!=-1)而且该方法既可以判断是否存在,又可以返回出现的位置。
        
    2.2字符串中是否有内容。
        boolean isEmpty();// 1.6JDK:即判断length()是否为0||||""--->对象null为空
    2.3字符串是否以指定内容开头。
        boolean startWith(str);
    2.4字符串是否以指定内容结尾。
        boolean endWith(str);
    2.5判断字符串的内容是否相同,复写了Object类中的equals方法。
        boolean equals(str);
    2.6判断内容是否相同,并忽略大小写。
        boolean equalsIgnorCase();
3.转换。
    3.1将字符数组转成字符串。
        构造函数: String(char[] value);
                          String(char[],offset,count);将字符数组中的一部分转成字符串。
        静态方法:static String copyValueOf(char[]);
                            static String    copyValueOf(char[] date,int index,int count);
                            static String valueOf(char[]);--->还可以将基本数据类型转换成String类型
    3.2将字符串转成字符数组。
            char[] toCharArray();
    3.3将字节数组转成字符串。
                             String(byte[] value);
                          String(byte[],offset,count);将字节数组中的一部分转成字符串。
    3.4将字符串转成字节数组。
            byte[] getBytes();
            
            特殊:字符串和字节数组在转换过程中,是可以指定编码表的。
4.替换
        String replace(oldchar,newc har);//如果要替换的字符不存在,则返回的还是原串
5.切割
        String[] split(regex);
6.子串,获取字符串中的一部分。
        String substring(int begin);// 从指定位置开始到结尾,如果角标不存在,会出现字符串角标越界异常。
        String substring(int begin,int end);// 包含头,不包含尾
7转换
    7.1将字符串转成大写或小写
        String toUperCase();
        String toLowerCase();
    7.2将字符串两端的多个空格去除
        String trim();//用户名、密码的时候去空
    7.3对两个字符串进行自然顺序的比较
        int compareTo(string);// "acc".compareTo("aaa")--->2相当于"c".compareTo"a";
        一:忽略大小写比较:先都转成小写再比较
        二:字符串反转:先转为字符数组,再把数组反转,数组反转就是首尾互换。一般遵循包含头不包含尾!
        三:获得一个字符串在另一个字符串中出现的次数。
            方法:用indexOf(char)判断 是否包含,然后用substring截子串
                        也可以直接indexOf(char,int),一直从找到的位置往后查找,更高效
                        注意:如果用split切割的话,如果"aacd".split("aa")则切出来的数组会有两个一个是""一个是"cd"(理应是两个,就是多的一个是"")
                        如果在结尾切的话切出来的数组长度会少一个
                        尽量不要用split切割
        四:两个字符串中最大共同子串。
            方法:从两个字符串中长度小的入手。小的里面从最大的字符串找起,用substring方法取子串,用contains判断大字符串是否包含。

StringBuffer

        是字符串缓冲区,是一个容器,
        特点:
        1.而且长度是可变化的。
        2.可以直接操作多个数据类型。
        3.最终会通过toString()方法变成字符串。
        
        容器的面盘理论:
              StringBuffer sb = new StringBuffer();
              StringBuffer sb1 = sb.append(34);
              sb == sb1;//true;都是34。
1、存储:append()
2、删除:delete(start,end);//删除缓冲区中的数据,包含start,不包含end。
                delete(index);//删除指定位置的字符。
3、获取
            length();
            Char charAt();
            indexOf(String str);
            lastindexOf(String str);
            String substring(int start,int end);//注意StringBuffer中只有这里返回的是String类型。跟String是一样的。
4、修改
        replace(int start,int end,String str);
        setCharAt(int index,char char);
5、插入:insert(index,数据);//可以将数据插入到index位置

6、反转 StringBuffer reverse();
7、将缓冲区中指定数据存储到指定字符数组中。
        void getChars(int srcBegin,int srcEnd,char[] dst,int dstBegin);                    

JDK1.5版本之后出现了StringBuilder。
StringBuffer是线程同步的。
StringBuilder是线程不同步。        
建议使用StringBuilder,更效率

升级是三个因素:
1.提高效率
2.简化书写
3.提高安全性
        
        
        
基本数据类型对象包装类
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character

基本数据类型数据包装类的最常见作用
就是用于基本数据类型和字符串类型之间转换。

基本数据类型转成字符串。
    基本数据类型.toString(基本数据类型值)
    如:Integer.toString(34);
字符串转基本数据类型。
    xxx a = Xxx.parseXxx(String);
    int a = Integer.parseInt("123");
十进制转成其他进制。
    toBinarystring();
    toHexString();
    toOctalString();
其他进制转成十进制。
    parseInt(string,radix);

自动装箱、自动拆箱(1.5JDK新特性)
------- android培训java培训、期待与您交流! ----------