String类型

(一)StringBuilder:可变字符串类型:
    (字符串:底层是字符数组,即其对数组的操作)
    特点:
        1、此类型是final修饰的
        2、没有重写equals方法和toString方法
        3、此类型提供的所有方法都带有返回值。
            即return this   返回同一个地址
    构造器:

        StringBuilder()
                构造了一个空的字符串生成器,初始容量为16,输出时输出有效字符


        StringBuilder(String str)
                创建一个指定字符串的StringBulider对象


    常用方法:

        toString()

         重写了toString方法:从StringBulider类型转换成String类型

                 System.out.println(str.toString().toString());==System.out.println(str);
        int length();
            返回有效字符的长度


        StringBuilder append(Type a)---追加
            将参数a追加到StringBuilder对象里,返回此对象

1、追加字符串

2、追加字符数组

3、追加字符数组,从下标为2开使,长度为2的字符数组

appened(char[] ahs,index ,length)

4、追加StringBulider

5、追加float


        StringBuilder insert(int index,Type a);
            将参数a插入到对象的下标index处


        StringBuilder delect(int start,int end);
            删除此对象里的部分字符,从start开始到end结束
            注意:包前不包后[start,end);


        StringBuilder replace(int start,int end,String str);
            使用str替换对象从start开始到end结束的字符串


        StringBuilder reverse():
            将StringBuilder对象的内容进行翻转


(二)StringBuffer:

    此类与StringBuilder用法一模一样。
    但是在线程安全上考虑:
        StringBuffer线程安全
        StringBuilder线程不安全
    在执行效率上:
        StringBuffer效率低
        StringBuilder效率高
    测试两种类型的效率

对拼接次数增加,会发现StringBuffer效率越来越低,需要注意的是,数字过大会出现Error,

内存溢出。

(三)String 类型:

 (底层是字符数组+队数组的操作)
    特点:
        1、是不可变的字符串类型(不可变:对象的内容不能更改)
        2、final修饰的类型
        3、字符下标(索引)从0开始
        4、重写了equals方法和toString方法
        5、默认使用的是unicode字符集,任意字符都占两个字节
             构造器:   

        String():构造方法
            创建一个空字符序列的字符串对象


        String(byte[] bs)
            创建一个字符串对象,使用默认字符集进行解码的字符串


        String(byte[] bs,String charset)
            将字节数组使用指定字符集进行解码成相应的字符串对象


        String(char[] ch)
            将字符数组转换成字符串对象


        String(String str)
            指定一个字符串字面量创建一个字符串对象


    常用方法:
        int length()
            返回字符串对象的字符个数


        char charAt(int index);
            返回此字符序列中指定索引处的字符,下标从0开始


        String concat(String another):
            将制定字符串another拼接到此字符序列的末尾,返回新对象


        boolean startsWith(String prefix)/endsWith(String suffix)
            查看此字符序列是否一prefix为前缀/以suffix为后缀


        byte[] getBytes() :
            将此字符串按照默认字符集编码为字节序列,结果返回新的字节数组


        byte[] getBytes(String charset)
            将此字符串按照指定的字符集编码成字节序列,返回新的字节数组


    查找子字符串中的字符/子字符串的位置
        int indexOf(int ch) 
            返回字符ch在此字符串中第一次出现的下标(索引/位置)  


        int indexOf(int ch, int fromIndex) 
             返回字符ch从此字符串fromIndex下标开始,往后第一次出现的位置


        int indexOf(String str)           
        int indexOf(String str, int fromIndex) 


            注意:以上四种方法如果返回-1,说明要找的字符不存在查找序列中
        int lastIndexOf(int ch)
        int lastIndexOf(String str)
        
        int lastIndexOf(int ch,int endIndex)
        int lastIndexOf(String str,int endIndex)


        查找字符/字符串截止到某一下标时,最后一次出现的位置,如果位数不够,会自动对照后面是不是与要查找的一致
        上述四种方法:
            查找字符/子字符串在此字符序列中最后一次出现的位置,找不到返回-1
        截取字字符串的方法:
            String substring(int beginIndex)
                从此字符序列的beginIndex开始截取,截取到最后


            String substring(int beginIndex,int endIndex)
                从此字符序列的beginIndex开始截取,截取到endIndex,包前不包后


        字符串转换成字符数组的方法:
            char[] toCharArray()
                将此字符序列变成字符数组


        字符串中的字母变成大写/小写
            String toUpperCase()
                将字符窗串的字母都变成大写,返回新字符串,


            String toLowerCase()
                将字符窗串的字母都变成小写,返回新字符串

以上两种方法中,字母区分大小写,数字汉字等不做区分
        前后去空格的方法:
            String trim()
                去掉此字符序列的前与后的空格


        将任何参数变成字符串对象
            static String valueOf(Type v) 
            将参数v变成字符串对象,任何形式的都可以


        equals方法与==的区别
            ==:用来比较是不是同一个对象
            equals:用来比较两个对象的内容是否相同
            String类型中重写了equals方法
    常量池:
        jvm在使用字符串类型时,为了提高内存的使用率,当使用字面量(常量)
        给变量赋值时,在方法区内提供了用于存储字面量对象的一个常量池
    原理:
        当使用字面量赋值时,先去方法区内的常量池中查询是否有相同字面量的对象,
        如果有,就返回常量池中对象的地址,没有的话,在常量池中创建此字面量的对象
        再返回

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值