Java中的字符串

import java.util.Arrays;

public class Demo {
    public static void main(String[] args) {
        //1、m.substring(a,b)提取出m的a到b-1的子串
        String m1 = "endeavour";
        String an = m1.substring(0,2);//输出为en

        //2、使用+可以进行字符串拼接
        String m2 = "lo";
        String n2 = "ve";
        String an1 = m2 + n2;//输出love
        //字符串和非字符串进行拼接时后者会被转化为字符串
        int k = 3;
        String an2 = m2 + n2 + k;//输出Love3
        //使用静态方法join可以把多个字符串放在一起,第一个数为分隔符,后面的为字符串
        String all = String.join("1", "s", "m", "e", "l", "l");//输出s/m/e/l/l

        //3、String类没有修改字符串的方法,可以通过使用m = m.substring(a,b)+c来达到修改的效果

        //4、equals()方法检验字符串是否相等,相等返回true,不相等返回false
        String m3 = "love1";
        String n3 = "love2";
        boolean an3 = m3.equals(n3);//输出为false
        boolean an4 = "love".equals("love");//输出为true
        //不区分大小写检查字符串是否相等
        String m4 = "love";
        String n4 = "LoVe";
        boolean an5 = m4.equalsIgnoreCase(n4);//输出为true

        //5、""表示空穿,null表示没有对象与变量关联

        //6、代码点和代码单元
        //代码点(code point)是指与一个编码表中的某个字符对应的代码值。在Unicode标准中,代码点采用十六进制书写,并加上前缀U+,例如U+0041就是字母A的代码点。
        //在基本的多语言级别中,每个字符用16位表示,通常被称为代码单元(code unit);而辅助字符采用对连续的代码单元进行编码。
        String m5 = "love";
        int an6 = m5.length();//获取给定字符串所需的代码单元数量,输出为4
        int an7 = m5.codePointCount(0, m5.length());//得到代码点数量,输出为4
        char first = m5.charAt(3);//charAt(n)返回n位置的代码单元
        //得到第i个码点
        int index1 = m5.offsetByCodePoints(0, 3);
        int cp = m5.codePointAt(index1);

        //7、String API
        String m6 = "hellq";
        String m7 = "hello";
        String m8 = "helln";
        //获得给定位置的代码单元
        char ch = m7.charAt(2);//返回l
        //返回给定位置开始的代码点
        int codePoint = m7.codePointAt(2);//返回108
        //返回从第一个数开始位移第二个数后的码点索引
        int index = m7.offsetByCodePoints(1,2);//返回3
        //m.compareTo(n),如果字符串m位于n之前,返回一个负数;如果m位于n之后,返回一个正数;相等返回0
        int compare1 = m7.compareTo(m6);//返回-2
        int compare2 = m7.compareTo(m8);//返回为1
        int compare3 = m7.compareTo("hello");//返回0
        //将字符串的码点作为一个流返回,调用toArray方法放到数组中
        int[] codePoints = m7.codePoints().toArray();//返回104,101,108,108,111
        //用codePoints数组中从0的codePoints.length个码点构造一个字符串
        String m9 = new String(codePoints, 0, codePoints.length);//输出为hello
        //相等返回true,不相等返回false
        boolean bool1 = m7.equals("hello");//返回true
        //忽略大小写,相等返回true,不相等返回false
        boolean bool2 = m7.equalsIgnoreCase("HeLLo");//返回true
        //以指定字符串开头返回true,否则返回false
        boolean bool3 = m7.startsWith("h");//返回true
        //以指定字符串结尾返回true,否则返回false
        boolean bool4 = m7.endsWith("o");//返回true
        //返回与字符串或者代码点匹配的第一个子串的开始位置。这个位置从0或者fromIndex开始计算。如果原始串中不存在则返回-1
        int index2 = m7.indexOf("l");//输出2
        int index3 = m7.indexOf("llo",1);//输出2
        int index4 = m7.indexOf(101);//输出1
        int index5 = m7.indexOf(101, 1);//输出1
        //返回与字符串或者代码点匹配的最后一个子串的开始位置。这个位置从原始尾串端或fromIndex开始计算。如果原始串中不存在则返回-1
        int index6 = m7.lastIndexOf("l");//输出3
        int index7 = m7.lastIndexOf("l", 3);//输入3
        int index8 = m7.lastIndexOf(108);//输出3
        int index9 = m7.lastIndexOf(108,4);//输出3
        //返回字符串的长度
        int length = m7.length();//输出5
        //codePointCount(a, b)返回a到b-1之间的代码点数量,没有配成对的代用字符将计入代码点
        int codePointCount = m7.codePointCount(0, m7.length());
        //m7.replace(a, b)返回一个新字符串。字符串中的a替换b,若a不在源字符串中则返回原字符串。
        String replaced = m7.replace("lo", "p!");//输出help!
        //返回一个新字符串。
        String m7_1 = m7.substring(1);//输出ello
        String m7_2 = m7.substring(1, 2);//输出e
        //转大写
        String up = m7.toUpperCase();//输出HELLO
        //转小写
        String low = up.toLowerCase();//输出hello
        //返回一个删除了头部和尾部的空格的新字符串
        String m10 = "           hello!";
        String m10_trim = m10.trim();//输出hello!
        //返回一个新字符串,用给定的定界符连接所有元素
        String m11 = String.join("0","d","c","d");//输出d0c0d
    }
}