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

来源:互联网 发布:centos www服务器配置 编辑:程序博客网 时间:2024/06/04 22:30
------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在字符串出现的位置。
    
          int 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
原创粉丝点击