黑马程序员-------String,StringBuffer,StringBuilder

---------------------- ASP.Net+Unity开发 .Net培训 期待与您交流! ----------------------


String类

    1,字符串是一个特殊的对象
    2,字符串一旦初始化就不可以被改变
    3, String str= "abc"; String str1 = new String("abc");有什么区别?

    public final class String
            extends Object
            implements Serializable, Comparable<String>, CharSequence
    java程序中的所有字符串字面值(如“abc”)都作为此类的实例实现。

    |    String s1 = "abc";
    |    String s2 = new String("abc");
    s1== s2 ;        //比较是内存中的地址,所以为false
    s1.equals(s2);    //String类复写了Object类中的equals方法,
                //该方法用于判断字符串是否相同。
    s1和s2有什么区别?
        s1在内存中有一个对象,s2在内存中有两个对象。

    String的常见的方法:
        常见操作  |    获取
                   |    判断
                   | 转换
    获取    
        public int length();
        public char charAt(int index);
            注意:当index超出字符串的脚标范围时会发生StringIndexOutOfBoundsException.
        public int indexOf(int ch);返回的是char在字符串第一次出现的位置
            注意:如果ch在字符串中没有找到,会返回-1
        public int indexOf(int ch, int fromIndex);从fromIndex位置开始,
                                        获取ch在字符串第一次出现的位置
        public int  indexOf(String str);
        public int indexOf(String str, int fromIndex);
        public int lastIndexOf(int ch);
    判断
        public boolean endsWith(String str);
        public boolean startsWith(String str);
        public boolean isEmpty(); 字符串长度是否为0,
        public boolean contains(CharSequence s);是否包含指定字符串
             特殊之处:indexOf(str):可以索引str第一次出现的位置,
                        如果返回-1,表示str不在字符串中。
                    if((indexOf(str) != -1)){
                        ....
                    }
        public boolean equals(String str);
        public boolean equalsIgnoreCase(String str);

    转换(字符串和字节数组在转换过程中,是可以指定编码表的)
        字符数组---->字符串
            构造方法: new String(char[] value)
                     new String(char[] val, int offset, int count):将字符数组中的一部分转成字符串
            静态方法: public static String copyValueOf(char[] chars)
                    public static String copyValueOf(char[] chars, int offset,int count)

                    public static String valueOf(char[]);
        *字符串 ----> 字符数组
                    public char[] toCharArray()
        字节数组 ----> 字符串
            构造方法:     new String(byte[] value)
        字符串 ----> 字节数组
                    public byte[] getBytes();
        基本数据类型 ----> 字符串
            public String valueOf(int)
            public String valueOf(double)
            public String valueOf()
    替换
        public String replace(char oldchar, char newchar);替换单个字符
        public String replace(CharSequence target, CharSequence replacement);替换一部分字符串
    切割
        public String[] split(regex);
            eg:        String str = "zhangsan,lisi,wangwu";
                    String[] arrStr = s.split(",");
                    for(String s : arrStr){
                    .................
                    }
    子串,获取字符串中的一部分
        public String subString(int begin);
        public String subString(int begin,int end);//得到的子串包含begin位不包含end索引位的字符
    
    转换,去除空格,比较
        大小写转换
            public String toUpperCase();
            public String toLowerCase();
        去除字符串两端的多个空格
            public String trim();
        对两个字符串进行自然顺序的比较
            public int compareTo(String str);
                eg:        String s1="abc";
                        String s2 = "aaa";
                        System.out.println(s1.compareTo(s2));    //输出1

StringBuffer

    是字符串缓冲区,
    是线程同步的,安全的
    是一个容器。
    1,    长度可以变化,
    2,    可以操作多个数据类型
    3,    最终会通过toString方法变成字符串
    有  CRUD操作:create,read,update,delete
    存储:
        添加:    public StringBuffer append();//将指定数据作为参数添加到结尾处。
            eg:  sb.append("abc").append(true).append(43);    //名词:方法调用链
        插入:    public StringBuffer insert(int, str);    //将指定数据作为参数插入到指定位置。            
    删除:    
            public StringBuffer delete(int start, int end);
                //删除从脚标start开始到end(不包含end)的字符
                eg:    stringBuffer.delete(0, stringBuffer.length());    //全部清空stringBuffer
            public StringBuffer deleteCharAt(index);
                //删除单个字符
    获取:
            public char charAt()
            public int indexOf(String str)
            public int length()
            public String substring(int start, int end);    //返回的是String而不是StringBuffer
    修改(替换):
            public StringBuffer replace(int start, int end, String str);
            public void setCharAt(int index, Char char);    //替换某一位字符,没有返回
    反转
            public StringBuffer reverse();
    
            public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin);
                StringBuffer中从脚标srcBegin到srcEnd的字符(不包含srcEnd位的字符)放入到字符数组dst中,从脚标dstBegin开始放入;

StringBuilder (jdk1.5 版本之后出现)

    一个可变的字符序列。
    线程不同步,不安全,所以多线程时使用StringBuffer;一般情况下建议使用StringBuilder可以提高效率

   

---------------------- ASP.Net+Unity开发 .Net培训 期待与您交流! ----------------------




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值