• Java-008-String类、StringBuffer和StringBuilder类


    一、String类

    //在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。

    //String greeting = "菜鸟教程";
     char[] helloArray = {'h', 'e', 'l', 'l', 'o'};
    String helloString = new String(helloArray);
    System.out.println("helloString=" + helloString);//helloString=hello
    //注意:String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了
    //如果需要对字符串做很多修改,那么应该选择使用 StringBuffer & StringBuilder 类。

    //①字符串长度 length() 方法,它返回字符串对象包含的字符数。

    String site = "www.baidu.com";
    int len = site.length();
    System.out.println("长度为:" + len);//长度为:13

    //②连接字符串 //string1.concat(string2);

            //返回 string2 连接 string1 的新字符串。也可以对字符串常量使用 concat() 方法
            "我的名字是 ".concat("Hello");
            //更常用的是使用'+'操作符来连接字符串,如
            //"Hello," + " World" + "!";
             String name = "我的名字".concat("Steven");
             System.out.println(name);//我的名字Steven

    //③创建格式化字符串

            //输出格式化数字可以使用 printf() 和 format() 方法。
            //String 类使用静态方法 format() 返回一个String 对象而不是 PrintStream 对象
            //String 类的静态方法 format() 能用来创建可复用的格式化字符串,而不仅仅是用于一次打印输出。
            double i = 1.2;
            float floatC = (float)i ;
            int intA = 1;
            String stringA = "stringA";
            System.out.printf("浮点型变量的值为 " +
                    "%f, 整型变量的值为 " +
                    " %d, 字符串变量的值为 " +
                    "is %s", floatC, intA, stringA);
            //浮点型变量的值为 1.200000, 整型变量的值为  1, 字符串变量的值为 is stringA
    
            //你也可以这样写
            String fs;
            fs = String.format("浮点型变量的值为 " +
                    "%f, 整型变量的值为 " +
                    " %d, 字符串变量的值为 " +
                    " %s", floatC, intA, stringA);

    //String 方法

    //①charAt() 方法 返回指定索引处的 char 值。

    char result = name.charAt(2);//我的名字Steven
    System.out.println(result);//

    //②compareTo() 方法 用于两种方式的比较

            //A.字符串与对象进行比较。
            //B.按字典顺序比较两个字符串。
            /*
                如果参数字符串等于此字符串,则返回值 0;
                如果此字符串小于字符串参数,则返回一个小于 0 的值;
                如果此字符串大于字符串参数,则返回一个大于 0 的值。
             */
            String str1 = "Strings";
            String str2 = "Strings";
            String str3 = "Strings123";
    
            int resultA = str1.compareTo( str2 );//0
            System.out.println(resultA);
    
            resultA = str2.compareTo( str3 );//-3 str2<str3
            System.out.println(resultA);
    
            resultA = str3.compareTo( str1 );//3 str3>str1
            System.out.println(resultA);

     //③compareToIgnoreCase() 方法 按字典顺序比较两个字符串,不考虑大小写。

     

    二、StringBuffer 和 StringBuilder 类

     

    //当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。

    //和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。

    //StringBuilder和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)

    //由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

    StringBuffer sBuffer = new StringBuffer("百度官网:");
    sBuffer.append("www");
    sBuffer.append(".baidu");
    sBuffer.append(".com");
    System.out.println(sBuffer);//百度官网:www.baidu.com

    //StringBuffer 方法

            //1 public StringBuffer append(String s)
            //将指定的字符串追加到此字符序列。
    
            //2 public StringBuffer reverse()
            // 将此字符序列用其反转形式取代。
    
            //3 public delete(int start, int end)
            //移除此序列的子字符串中的字符。
    
            //4 public insert(int offset, int i)
            //将 int 参数的字符串表示形式插入此序列中。
    
            //5 replace(int start, int end, String str)
            //使用给定 String 中的字符替换此序列的子字符串中的字符。

    //下面的列表里的方法和 String 类的方法类似:

            //①int capacity()
            //返回当前容量
    
            //②char charAt(int index)
            //返回此序列中指定索引处的 char 值。
    
            //③void ensureCapacity(int minimumCapacity)
            //确保容量至少等于指定的最小值。
    
            //④String toString()
            //返回此序列中数据的字符串表示形式。

     

  • 相关阅读:
    n-1位数
    关于VC预定义常量_WIN32,WIN32,_WIN64
    python中的闭包
    TCP粘包, UDP丢包, nagle算法
    C++中 explicit的用法
    为什么mysql索引要使用B+树,而不是B树,红黑树
    屏障和屏障属性
    带有超时的读写锁
    pthread_mutex_timedlock
    段错误以及调试方式
  • 原文地址:https://www.cnblogs.com/StevenHuSir/p/Java_String.html
Copyright © 2020-2023  润新知