• Java笔记:String类


    1.String类是不可变类,一旦一个String对象被创建以后,包含在这个对象中的字符序列式不可改变的,直至这个对象被销毁。

    String s1 = "java";
    s1 = s1 + "android";
    s1 = s1 + "mysql";

    1)上面三个语句使用了3个字符串直接量之外,还会额外生成2个字符串直接量,"javaandroid","javaandroidmysql";程序中的s1依次指向3个不同的字符串对象。因为String是不可变的,所以会额外产生很多临时变量。
    2)使用StringBuffer和StringBuilder就可以避免这个问题,StringBuilder提供了一系列插入、追加、改变该字符串里包含的字符序列的方法。
    3)StringBuffer和StringBuilder的length是可变的,可以通过length()、和setLength(int len)方法来访问和修改其字符序列的长度。
    4)StringBuffer对象则代表一个字符序列可变的字符串。一旦通过StringBuffer生成了最终想要的字符串,就可以调用它的toString()方法将其转换成一个String对象。
    5)StringBuilder也代表字符串对象,基本与StringBuffer相似。不同的是StringBuffer是线程安全的,而StringBuilder则没有实现线程安全,所以性能略高。

    package cn.lsl;
    
    public class StringBuilderTest {
        public static void main(String[] args) {
            StringBuilder sb = new StringBuilder();
            //追加字符串
            sb.append("java");
            System.out.println(sb);
            //插入
            sb.insert(0, "hello ");
            System.out.println(sb);
            //替换
            sb.replace(5, 6, ",");
            System.out.println(sb);
            //删除
            sb.delete(5, 6);
            System.out.println(sb);
            //反转
            System.out.println(sb.reverse());
            //改变长度
            sb.setLength(5);
            System.out.println(sb);
        }
    }

    2.String对象中常用的操作字符串的方法

    1)char charAt(int index):获取字符串中指定位置的字符。

    String s = new String("abcdefghijklmn");
    System.out.println("s.charAt(2):" + s.charAt(2));

    采用for循环遍历出字符串中的所有字符

    for(int i=0; i<s.length(); i++){
        System.out.println("Char " + i + " is " + s.charAt(i));
    }

    2)int compareTo(String anotherString):比较两个字符串的大小。如果两个字符串的字符序列相等,则返回0;不相等时,从两个字符串第0个字符开始比较,返回第一个不相等的字符差。
    另一种情况,较长字符串的前面部分恰巧是较短的字符串,则返回它们的长度差。

    String s1 = new String("abcdefgh");
    String s2 = new String("abcde");
    String s3 = new String("abcdefga");
    System.out.println(s1.compareTo(s2));
    System.out.println(s1.compareTo(s3));

    3)String concat(String str):将该String对象与str连接在一起。

    String s1 = "aaaa";
    String s2 = "bbbb";
    System.out.println(s1.concat(s2))

    4)static String copyValueOf(char[] data):将字符数组连缀成字符串。
    static String copyValueOf(char[] data,int offset,int count):将char数组的子数组中的元素连缀成字符串。

    char data[] = new char[]{'a','b','c','d'};
    System.out.println(String.copyValueOf(data));
    System.out.println(String.copyValueOf(data,1,2));

    5)boolean endsWith(String suffix):返回该String对象是否已suffix结尾。

    String a = "abcdefg";
    String b = "fg";
    System.out.println(a.endsWith(b));

    6)boolean equals(Object anObject):将该字符串与制定对象比较,如果二者包含的字符序列相等,则返回true,否则返回false。
    boolean equalsIgnoreCase(String str):与equals(Object anObject)方法相似,只是忽略了大小写。

    String a = "abc";
    String b = "abc";
    System.out.println(a.equals(b));
    String c = "dEf";
    String d = "DeF";
    System.out.println(c.equalsIgnoreCase(d));

    7)byte[] getBytes():将该String对象转换成byte数组。

    String a = "abcdef";
    byte b[] = a.getBytes();
    System.out.println(b.length);

    8)void getChars(int srcBegin,int srcEnd,char[] dst,int dstBegin):该方法将字符串从srcBegin开始,到srcEnd结束的字符复制到dst字符数组中,dstBegin为目标字符数组的起始复制位置。

    char[] s1 = {'I',' ','l','o','v','e',' ','j','a','v','a'};
    String s2 = "you";
    s2.getChars(0, 3, s1, 7);
    System.out.println(s1);

    9)int indexOf(int ch):找出ch字符在该字符串中第一次出现的位置。
    int indexOf(int ch, int formIndex);找出ch字符在该字符串中从fromIndex开始第一次出现的位置。
    int indexOf(String str):找出str子字符串在该字符串中第一次出现的位置。
    int indexOf(String str, int formIndex);找出str子字符在该字符串中从fromIndex开始后第一次出现的位置。

    String s = "write once, run anywhere";
    String ss = "run";
    System.out.println(s.indexOf('r'));
    System.out.println(s.indexOf('r', 2));
    System.out.println(s.indexOf(ss));

    int lastIndexOf(int ch):找出ch字符在该字符串中最后一次出现的位置。
    int lastIndexOf(int ch, int formIndex);找出ch字符在该字符串中从fromIndex开始最后一次出现的位置。
    int lastIndexOf(String str):找出str子字符串在该字符串中最后一次出现的位置。
    int lastIndexOf(String str, int formIndex);找出str子字符在该字符串中从fromIndex开始后最后一次出现的位置。

    10)boolean startsWith(String prefix):该String对象是否以prefix。
    boolean startsWith(String prefix, int toffset):该String对象从toffset位置算起,是否以prefix开始。

    String s = "write once, run anywhere";
    String s1 = "write";
    String s2 = "run";
    System.out.println(s.startsWith(s1));
    System.out.println(s.startsWith(s2, 12));

    11)char toCharArray():将该String对象转换成char数组。

    String a = "abcdef";
    char b[] = a.toCharArray();
    System.out.println(b.length);

    12)String substring(int beginIndex):获取从beginindex位置开始到结束的子字符串。

    String substring(int beginIndex, int endIndex):获取从beginIndex位置开始到endIndex位置的子字符串。
    String a = "abcdefghijklmn";
    System.out.println(a.substring(2));
    System.out.println(a.substring(2,5));

    13)String toLowerCase():将字符串转换成小写。
    String toUpperCase():将字符串转换成大写。

    String a = "aBcDeFgHiJkLmN";
    System.out.println(a.toLowerCase());
    System.out.println(a.toUpperCase());

    14)String valueOf(X x):将基本数据类型转换成String对象。

    String a = String.valueOf(23.333);
    System.out.println(a);

    String类中还有很多的方法,我们都可以从API文档中查到各种方法的用法。

     

  • 相关阅读:
    echarts 饼图
    vue echarts
    :style :class
    弹框弹出时禁止页面滚动
    2019-2-10 日记
    2019-1-27 日记
    2019-1-26 日记
    2019-1-3 日记
    2019-1-10 日记
    2019-1-2 日记
  • 原文地址:https://www.cnblogs.com/EvanLiu/p/3150067.html
Copyright © 2020-2023  润新知