String字符串

String字符串

1.字符串的比较

public class Demo01 {
    public static void main(String[] args) {
        String a="test";
        String b="test";
        System.out.println(a==b);//true,test放在堆中的常量池中
        String testa = new String("test1");
        String testb = new String("test1");
        System.out.println(testa==testb);//false
    }
}

String字符串

3.String的方法

3.1简单方法

public class Demo02 {
    public static void main(String[] args) {
        String a="tesT测试";
        System.out.println(a.length());//字符数 6
        System.out.println(a.isEmpty());//判空 false
        String b="";//空字符串,在常量池有地址
        System.out.println(b.isEmpty());//true
        String bb=" ";
        System.out.println(bb.isEmpty());//false
        //String c=null;//空对象,无地址
        //System.out.println(c.isEmpty());//NullPointerException
        System.out.println(a.startsWith("t"));//以字符串开始 true
        System.out.println(a.endsWith("试"));//以字符串结束 true
        System.out.println(a.toUpperCase());//转大写 TEST测试 将常量池中的a复制一份然后大写,并不改变原来a的值
        System.out.println(a.toLowerCase());//转小写 test测试
        System.out.println(a);//还是刚开始定义的a  tesT测试
    }
}

3.2字符串查找方法

import java.util.UUID;

public class Demo03 {
    public static void main(String[] args) {
        String a = "test测试test";
        System.out.println(a.charAt(2));//String底层是一个char型数组,返回指定下标的字符 s
        System.out.println(a.indexOf("s"));//根据指定字符串查找第一次出现此字符串的下标,查不到返回-1  2
        System.out.println(a.indexOf("s",4));//从指定位置查找出现指定字符串下标 8
        System.out.println(a.lastIndexOf("s"));//最后一次出现指定字符串的下标 8
        System.out.println(a.substring(4));//从指定下标截取字符串到末尾 测试test
        System.out.println(a.substring(4,6));//从指定下标截取指定长度的字符串(含头不含尾)   测试

        System.out.println("======截取.jpg,并新生成一个文件名");
        String fileName="1.2.3.4.5.jpg";
        int i = fileName.lastIndexOf(".");
        System.out.println(i);//最后一次出现.的下标   9
        String uuid = UUID.randomUUID().toString();//随机生成文件名
        System.out.println(uuid);//5058b8cf-4643-4aeb-821b-bf6fc42593cf
        String substring = fileName.substring(i);//.jpg
        System.out.println(uuid+substring);//5058b8cf-4643-4aeb-821b-bf6fc42593cf.jpg

    }
}

3.3字符串的转换方法

import java.io.UnsupportedEncodingException;
import java.util.Arrays;

public class Demo04 {
    public static void main(String[] args) throws UnsupportedEncodingException {
        String str = "test测试";//utf-8 中文占三个字节,gbk中文占两个字节
        byte[] bytes = str.getBytes();//将字符串转换为byte数组
        System.out.println(Arrays.toString(bytes));//[116, 101, 115, 116, -26, -75, -117, -24, -81, -107] ,当前为utf-8 格式
        String gbk = new String(bytes, "GBK");//给指定的字符串重新编码,编码不能随便转换,可能会出现乱码(utf-8转gbk相当于3个字节转2个字节)
        System.out.println(gbk);//test娴嬭瘯
    }
}

3.4字符串是否包含,替换,拼接,分割,去除空格

import java.util.Arrays;

public class Demo05 {
    public static void main(String[] args) {
        String str="test测试test";
        System.out.println(str.contains("e"));//true  是否包含指定字符串

        System.out.println(str.replace("test","测试"));//测试测试测试  全部替换指定字符串
        System.out.println(str.replaceAll("test","测试"));//测试测试测试  全部替换指定字符串,支持正则
        System.out.println(str.replaceFirst("test","测试"));//测试测试test 替换首次出现的指定字符串,支持正则

        System.out.println(str.concat("aaa"));//test测试testaaa 在字符串的后面拼接
        str.concat("a");
        str.concat("b");
        System.out.println(str);//test测试test  str.concat()只是复制了一份str拼接为新的字符串后放到了常量池,并不改变原来的str,除非重新赋值,如下;
        str = str.concat("a");
        str = str.concat("b");
        System.out.println(str);//test测试testab 这种方法会造成资源的浪费,因为复制了很多中间值在常量池

        String str1="t-e-s-t";
        String[] split = str1.split("-");//字符串的分割
        System.out.println(Arrays.toString(split));//[t, e, s, t]

        String str2=" te st ";
        System.out.println("--"+str2.trim()+"--");//--te st-- 去除开始和结束位置的空格

    }
}

3.5 字符串的比较

public class Demo06 {
    public static void main(String[] args) {
        String str="abc";//常量池中
        String str2="abc";//常量池中
        System.out.println(str==str2);//==比较的是地址 true
        System.out.println(str.equals(str2));//equals比较的是值 true
        String str3="ABc";
        System.out.println(str.compareTo(str3));//比较时不忽略大小写 32
        System.out.println(str.compareToIgnoreCase(str3));//比较时忽略大小写 0
        String str4="abc1";
        System.out.println(str.compareTo(str4));//-1  compareTo按照最小长度依次比较字符串,如果都相同,长度相减
    }
}

//compareTo源码  
public int compareTo(String anotherString) {
        int len1 = value.length;
        int len2 = anotherString.value.length;
        int lim = Math.min(len1, len2);
        char v1[] = value;
        char v2[] = anotherString.value;

        int k = 0;
        while (k < lim) {
            char c1 = v1[k];
            char c2 = v2[k];
            if (c1 != c2) {
                return c1 - c2;
            }
            k++;
        }
        return len1 - len2;
    }

String字符串

上一篇:2021-7-7 Vue实现切换图片功能代码


下一篇:Rides 未授权访问