黑马程序员———字符串和字符串缓冲区

------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


 

  • String类
字符串是一个特殊的对象
字符串一旦初始化就不可以被改变。

String str = "abc";
     // str是一个类类型变量,"abc"是一个对象
     // 字符串最大特点: 一旦被初始化,不可以被改变

String str1 = new String("abc");
public final class String extends Object
不能被继承。

equals比较的是内存地址。

str==str1;//false
str.equals(str1);//true

  • str和str1有什么区别?
          str在内存中有一个对象。str1在内存中有两个对象。

String类复写了Object类中equals方法,该方法用于
判断字符串是否相同。

          String类是用于描述字符串事物。那么它提供多个方法对字符串进行操作。

常见的操作有哪些?
"abcd"
1.获取
     1.1字符串中包含的字符数,也就是 字符串的长度
            int length();获取长度。
    
     1.2 根据位置获取位置上的某个字符。
            char charAt(int index);
    
     1.3 根据字符获取该字符在字符串中的位置
            int indexOf(int ch),返回的是ch在字符串中第一次出现的位置。
            int indexOf(int ch,int fromIndex);从fromIndex指 定位置开始索引,获取ch在字符串出现的位置。
    
            int indexOf(String str),返回的是str在字符串中 第一次出现的位置。
            int indexOf(String str,int fromIndex);从fromIndex 指定位置开始索引,获取str在字符串出现的位置。
    
          i nt lastIndexOf(int ch);根据字符反向索引位置

2.判断
     2.1字符串中 是否包含某一个子串
           boolean contains(str);
          特殊之处:indexOf(str);可以索引str第一次出现的位置,
          如果返回-1表示该str不在字符串中存在,所以也可以用于对指定字符串的判断是否包含。
            if(str.indexOf("aa")!=-1)
          而且该方法既可以判断,又可以获取出现的位置。
         
     2.2字符串 是否有内容
            boolean isEmpty();//原理就是判断长度是否为0.
    
     2.3字符串是否以指定内容 开头
            boolean startsWith(str);
    
     2.4字符串是否以指定内容 结尾
            boolean endsWith(str);
         
     2.5判断字符串 内容是否相同。复写了Object类的equals方法。
      boolean equals(str);
    
     2.6 判断内容是否相同,并忽略大小写
       boolean equalsIgnoreCase();
    
3.转换
      3.1将字符数组转成字符串
           构造函数: String(char[]);
                  String(char[],offset,count);将字符数组中的一部分转成字符串
                 
          静态方法: static String copyValueOf(char[]);
                  static String copyValueOf(char[],int offset,int count);
                  static String ValueOf(char[]);
                 
       3.2将字符串转成字符数组   **
           char[] toCharArray();
     3.3将字节数组转成字符串
          String(byte[]);
          String(byte[],offset,count);
         
     3.4将字符串转成字节数组
          byte[] getBytes();
         
     3.5将基本数据类型转成字符串。
          static String valueOf(int)
          static String valueOf(double)
          //3+"abc";  //String.valueOf(3);
    
       特殊:字符串和字节数组在转换过程中,是可以指定编码表的
    
4.替换
       String replace(oldchar,newchar);
    
5.切割
       String[] split(regex);
    
6.子串   。获取字符串中的一部分
      String substring(int beginindex);
     Stirng substring(int beginindex,int endinde);
       获取头不获取尾
    
7.转换,去除空格,比较。
    
     7.1将字符串转成大写或则小写。
          String toUpperCase();
          String toLowerCase();
     7.2将字符串两端的空格去掉。
          String trim();
     7.3对两个字符串进行自然顺序比较。
          int compareTo(String);



StringBuffer是字符串缓冲区,
     且是一个容器,
     特点:(和数组的区别)
       1. 是可变长度的,
     2. 可以直接操作多个数据类型,
     3.最终通过toString方法变成字符串。


C create U update R read D delete
    
1.存储。
       StringBuffer append();将制定的数据作为参数添加到已有数据的结尾处。
       StringBuffer insert(index,数据);可以将数据插入到制定index位置。
    
2.删除。
     StringBuffer delete(start,end)
;删除缓冲区中的数据,包含头不包含尾
       StringBuffer deleteCharAt(index);删除指定位置的字符。
3.获取。
     char charAt(int index)
     int indexOf(String str)
     int lastIndexOf(String str)
     int length()
     String substring(int start,int end)
4.修改。
     StringBuffer replace(start,end,string);
     void setCharAt(int index,char ch);
    
5.反转。
     StringBuffer reverse();
    
6.将缓冲区中的数据存储到指定数组中。
       void getChars(int srcBegin,int srcEnd,char[] dst,int dstBegin)
    
    
JDK1.5版本之后出现了StringBuilder
     StringBuffer是线程同步的,线程安全。
     StringBuilder是线程不同步,效率更高。
      开发建议使用StringBuilder。
Java的升级三要素:
       1.提高效率
     2.简化书写
     3.提高安全性
     2.简化书写
     3.提高安全性



------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值