zoukankan      html  css  js  c++  java
  • 字符串和字符串容器

    String字符串

    java中用String类进行描述。对字符串进行了对象的封装。这样的好处是可以对字符串这种常见数据进行方便的操作。

    String s1 = "abc"; // s1指向的内存中只有一个对象abc。
    String s2 = new String("abc"); // s2指向的内容中有两个对象abc、new 。
     
    System.out.println(s1==s2);//false
    System.out.println(s1.equals(s2));//true ,字符串中equals比较的是字符串内容是否相同
    

    特点:字符串一旦被初始化,就不可以被改变,存放在方法区中的常量池中

    1. 获取:
      获取字符串的长度。length();
      指定位置的字符。char charAt(int index);
      获取指定字符的位置。如果不存在返回-1,所以可以通过返回值-1来判断某一个字符不存在的情况。
      int indexOf(int ch);//返回第一次找到的字符角标
      int indexOf(int ch,int fromIndex); //返回从指定位置开始第一次找到的角标
      int indexOf(String str); //返回第一次找到的字符串角标
      int indexOf(String str,int fromIndex);
      int lastIndexOf(int ch);
      int lastIndexOf(int ch,int fromIndex);
      int lastIndexOf(String str);
      int lastIndexOf(String str,int fromIndex);

    1. 获取子串。
      String substring(int start);//从start位开始,到length()-1为止.
      String substring(int start,int end);//从start开始到end为止。//包含start位,不包含end位。
      substring(0,str.length());//获取整串
    1. 判断:
    • 字符串中包含指定的字符串吗?
      boolean contains(String substring);
    • 字符串是否以指定字符串开头啊?
      boolean startsWith(string);
    • 字符串是否以指定字符串结尾啊?
      boolean endsWith(string);
    • 判断字符串是否相同
      boolean equals(string);//覆盖了Object中的方法,判断字符串内容是否相同。
    • 判断字符串内容是否相同,忽略大小写。
      boolean equalsIgnoreCase(string) ;

    1. 转换:
    • 通过构造函数可以将字符数组或者字节数组转成字符串。
    • 可以通过字符串中的静态方法,将字符数组转成字符串。
      static String copyValueOf(char[] );
      static String copyValueOf(char[],int offset,int count);
      static String valueOf(char[]);
      static String valueOf(char[],int offset,int count);
    • 将基本数据类型或者对象转成字符串。
      static String valueOf(char);
      static String valueOf(boolean);
      static String valueOf(double);
      static String valueOf(float);
      static String valueOf(int);
      static String valueOf(long);
      static String valueOf(Object);
    • 将字符串转成大小写。
      String toLowerCase();
      String toUpperCase();
    • 将字符串转成数组。
      char[] toCharArray();//转成字符数组。
      byte[] getBytes();//可以加入编码表。转成字节数组。
    • 将字符串转成字符串数组。切割方法。
      String[] split(分割的规则-字符串);
    • 将字符串进行内容替换。注意:修改后变成新字符串,并不是将原字符串直接修改。
      String replace(oldChar,newChar);
      String replace(oldstring,newstring);
    • String concat(string); //对字符串进行追加。
      String trim();//去除字符串两端的空格
      int compareTo();//如果参数字符串等于此字符串,则返回值 0;如果此字符串按字典顺序小于字符串参数,则返回一个小于 0 的值;如果此字符串按字典顺序大于字符串参数,则返回一个大于 0 的值。

    StringBuffer字符串缓冲区

    特点:
    1:可以对字符串内容进行修改。
    2:是一个容器。
    3:是可变长度的。
    4:缓冲区中可以存储任意类型的数据。
    5:最终需要变成字符串。

    1,添加。
    StringBuffer append(data):在缓冲区中追加数据。追加到尾部。
    StringBuffer insert(index,data):在指定位置插入数据。
    2,删除。
    StringBuffer delete(start,end);删除从start至end-1范围的元素
    StringBuffer deleteCharAt(index);删除指定位置的元素
    //sb.delete(0,sb.length());//清空缓冲区。
    3,修改。
    StringBuffer replace(start,end,string);将start至end-1替换成string
    void setCharAt(index,char);替换指定位置的字符
    void setLength(len);将原字符串置为指定长度的字符串
    4,查找。(查不到返回-1)
    int indexOf(string); 返回指定子字符串在此字符串中第一次出现处的索引。
    int indexOf(string,int fromIndex);从指定位置开始查找字符串
    int lastIndexOf(string); 返回指定子字符串在此字符串中最右边出现处的索引。
    int lastIndexOf(string,int fromIndex); 从指定的索引开始反向搜索
    5,获取子串。
    string substring(start); 返回start到结尾的子串
    string substring(start,end); 返回start至end-1的子串
    6,反转。
    StringBuffer reverse();字符串反转

    StringBuilder字符串缓冲区

    1. StringBuffer 和 StringBuilder区别:

    StringBuffer线程安全。
    StringBuilder线程不安全。
    单线程操作,使用StringBuilder 效率高。
    多线程操作,使用StringBuffer 安全。

    所以Builder常用于单线程的时候。

    方法一致:

    StringBuilder sb = new StringBuilder("abcdefg");
    sb.append("ak");  //abcdefgak
    sb.insert(1,"et");//aetbcdefg
    sb.deleteCharAt(2);//abdefg
    sb.delete(2,4);//abefg
    sb.setLength(4);//abcd
    sb.setCharAt(0,'k');//kbcdefg
    sb.replace(0,2,"hhhh");//hhhhcdefg
    
    class  Test{
    public static void main(String[] args) {
    String s1 = "java";
    String s2 = "hello";
    method_1(s1,s2);
    System.out.println(s1+"...."+s2); //java....hello
     
    StringBuilder s11 = new StringBuilder("java");
    StringBuilder s22 = new StringBuilder("hello");
    method_2(s11,s22);
    System.out.println(s11+"-----"+s22); //javahello-----hello
    }
    public static void method_1(String s1,String s2){
    s1.replace('a','k');
    s1 = s2;
    }
    public static void method_2(StringBuilder s1,StringBuilder s2){
    s1.append(s2);
    s1 = s2;
    }
    }
    
  • 相关阅读:
    20200209 ZooKeeper 3. Zookeeper内部原理
    20200209 ZooKeeper 2. Zookeeper本地模式安装
    20200209 Zookeeper 1. Zookeeper入门
    20200206 尚硅谷Docker【归档】
    20200206 Docker 8. 本地镜像发布到阿里云
    20200206 Docker 7. Docker常用安装
    20200206 Docker 6. DockerFile解析
    20200206 Docker 5. Docker容器数据卷
    20200206 Docker 4. Docker 镜像
    Combining STDP and Reward-Modulated STDP in Deep Convolutional Spiking Neural Networks for Digit Recognition
  • 原文地址:https://www.cnblogs.com/jwlxtf/p/7932455.html
Copyright © 2011-2022 走看看