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()
        //返回此序列中数据的字符串表示形式。

 

原文地址:https://www.cnblogs.com/StevenHuSir/p/Java_String.html