zoukankan      html  css  js  c++  java
  • 关于String与StringBuffer

    String类的一些特点

    1:它是一个特殊类,一旦被初始化,内容就不可以被改变,一般有两种初始化的方式 

        --| String s1 = “abc”;//abc存在字符串常量池中,它就是一个对象,以后有代码需要使用到abc的话,可以直接使用,不用在去开辟字符串abc的空间

        --| String s2 = new String(“abc”);//有了new关键字,需要在堆内存中开辟一个abc的空间,栈中的s2存储的是堆中abc的地址

    s1和s2的区别?  s1在内存中只有一个对象,s2在内存中有2个对象.

    public class StringDemo {
        public static void main(String[] args) {
            /*
             * String特点
             * 字符串对象一旦被初始化,就不会被改变
             */
            String s1 = "abc";  //"abc"存在在字符串常量池中,没就创建,有就直接用
            String s2 = "abc";
            System.out.println(s1 == s2);    //true    
            String s3 = "nba";
            String s4 = new String("nba");//在堆内存中开辟一个nba的空间
            System.out.println(s3 == s4);//false, 比较的是地址,一个在常量池中,一个在堆内存中
            System.out.println(s3.equals(s4));//在String中的equals(),复写了OBJ中的equals(),它比较的是内容
            
        }
    }

    String类中一些常用的方法

    1:获取

    int length();

    char charAt(int index);

    int indexOf(String str);  索引str出现的第一次的位置,假如str不存在的话,返回-1,它可以用于对指定的字符串来判断是否存在

                                   在之后的几个小练习中会有所体现

    int indexOf(String str,int fromIndex);

    int lastIndexOf(String str);

    2:判断

    boolean contains(String str);

    boolean isEmpty();

    boolean endsWith(String str);

    boolean startsWith(String str);

    boolean equals(String str);  判断字符串的内容是否相同,大小写有区别

    boolean equalsIgnoreCase();   判断字符串的内容是否相同,这个是不区分大小写的

    3:转换

    3.1 将字符数组转成字符串。
            构造函数:String(char[])
                      String(char[],offset,count):将字符数组中的一部分转成字符串。

            静态方法:
                    static String copyValueOf(char[]);
                    static String copyValueOf(char[] data, int offset, int count) ;

               static String valueOf(char[]):

    4:替换

    String replace(String oldChar,String newChar);

    5:获取字符串的子串

    String subString(int beginIndex);  beginIndex是截取子串索引的开始位置,包括这个位置

    String subString(int beginIndex,int endIndex);获取2个索引值之间的子串,包头,不包尾巴

    6,转换,去除空格,比较。
             将字符串转成大写或则小写。
             String toUpperCase();
             String toLowerCase();

       将字符串两端的多个空格去除。
            String trim();   这个方法在以后开发的时候,设计用户输入的密码和用户名的时候会有很大的作用

       对两个字符串进行自然顺序的比较。
            int compareTo(string);

    --------------------------------------------------------------------------------------------------------------------

    StringBuffer

    StingBuffer是一个容器,是字符串缓冲区,特点:长度可以改变,可以字节操作多种数据类型,最终通过toSting()来变成字符串

    1,存储。
        StringBuffer append():将指定数据作为参数添加到已有数据结尾处。
        StringBuffer insert(index,数据):可以将数据插入到指定index位置。


    2,删除。
        StringBuffer delete(start,end):删除缓冲区中的数据,包含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)

    StringBuffer在开发是时候,使用的次数较多 .原因?

    String在使用的时候,我们在改变它的值的时候,会伴随这它的内存地址也会变化,对于StringBuffer,改变它的值,它所占用的内存地址是不会改变的

    从这一点上来看,StringBuffer的效率是高于String的

  • 相关阅读:
    centos 添加 composer
    laravel5 缓存的使用
    git 的使用
    php 消息队列 rabbitmq 的安装使用
    vue插件大汇总
    vue 2.0 Gzip打包压缩
    Easy Mock 为啥那么打不开了?
    element ui 打印 表格
    解决 element 日期范围选择问题(只能选择相邻的 连两个月)
    vue router 的路由传参 params 和 query 的 区别
  • 原文地址:https://www.cnblogs.com/driverwjd/p/3810845.html
Copyright © 2011-2022 走看看