美文网首页
Java - 核心类库上(任务二.String类的概述和使用)

Java - 核心类库上(任务二.String类的概述和使用)

作者: aven_kang | 来源:发表于2022-06-27 17:24 被阅读0次

String类的概念

截屏2022-04-25 13.26.56.png

常量池的概念

截屏2022-04-25 13.30.39.png
        String s1 = "123";
        String s2 = "123";
        System.out.println(s1.hashCode()); // 48690
        System.out.println(s2.hashCode()); // 48690

根据常量池的描述,我们可以看出常量值的哈希值是一样的,公用一个常量

String常用构造方法

截屏2022-04-25 14.06.03.png
        String s1 = new String();
        String s2 = String.valueOf(0.3);
        byte[] b1 = {97,98,99,100,101};
        String s3 = new String(b1,1,3);
        System.out.println(s3); // "bcd"
        String s4 = new String(b1);
        System.out.println(s4); // "abcde"
        System.out.println("-------------------------");
        char[] cArr = {'h','e','l','l','o','w'};
        String s5 = new String(cArr);
        System.out.println(s5); // hellow
        String s6 = new String(cArr,1,3);
        System.out.println(s6); // ell
    //1.请问下面的代码会创建几个对象?分别存放在什么地方
    String s1 = "hellow"; // 1个对象,存放在常量池
    String s2 = new String("hellow"); // 2个对象,1个在常量池,1个在堆区

        String str1 = "hellow"; // 常量池
        String str2 = "hellwo"; // 常量池
        String str3 = new String("hellow"); // 堆区
        String str4 = new String("hellow"); // 堆区

        System.out.println(str1 == str2); // 比较地址 true
        System.out.println(str1.equals(str2)); // 比较内容 true
        System.out.println(str3 == str4); // 比较地址 false
        System.out.println(str3.equals(str4)); // 比较内容 true
        System.out.println(str2 == str4); // 比较地址 false
        System.out.println(str2.equals(str4)); // 比较内容 true

        System.out.println("--------------------------");
        String str5 = "abcd";
        String str6 = "ab" + "cd"; // 常量优化机制
        System.out.println(str5 == str6); // 比较地址 true

        String str7 = "ab";
        String str8 = str7 + "cd"; // str7不算常量,所以不能使用常量优化机制
        System.out.println(str5 == str8); // false

String的常用成员方法

截屏2022-04-25 14.48.07.png
        String s1 = "HELLOW";
        System.out.println(s1.toLowerCase(Locale.ROOT));
        byte[] byArr = s1.getBytes(StandardCharsets.UTF_8);
        for (int i = 0; i < byArr.length; i++) {
            System.out.println(byArr[i]);
            // 72 69 76 76 79 87
        }
        System.out.println("------------------");
        char[] charArr = s1.toCharArray();
        for (int i = 0; i < charArr.length; i++) {
            System.out.println(charArr[i]);
            // H E L L O W
        }

        String s2 = new String(charArr);
        System.out.println(s2); // HELLOW

        String s3 = new String(byArr);
        System.out.println(s3); // HELLOW

        char c1 = s2.charAt(3);
        System.out.println(c1); // L

        for (int i = 0; i < s2.length(); i++) {
            System.out.println(s2.charAt(i)); // 打印每个字符 H E L L O W
        }
截屏2022-04-25 15.33.48.png
        String s1 = "   hellow";
        String s2 = s1.concat(" world "); // 拼接
        System.out.println(s2);
        if (s2.contains("w")) { // 是否包含
            System.out.println("Contains");
        }
        s2 = s2.toUpperCase(Locale.ROOT); // 转大写
        System.out.println(s2);
        String s3 = s2.toLowerCase(Locale.ROOT); // 转小写
        System.out.println(s3);
        System.out.println(s3.trim()); // trim去掉左右两边的空白

小练习
判断输入的账号是否是admin,密码是否是123456,为登陆条件

    for (int i = 0; i < 3; i++) {
            // 1.提示用户从键盘输入用户名和密码信息并使用变量记录
            System.out.println("请输入您的用户名和密码信息:");
            Scanner sc = new Scanner(System.in);
            String userName = sc.next();
            String password = sc.next();

            if (userName.equals("admin") && password.equals("123456")) {
                System.out.println("登陆成功");
                sc.close();
                break;
            } else {
                System.out.println("用户名或密码错误");
                if (i == 2){
                    System.out.println("账户冻结");
                }else{
                    System.out.println("您还有 "+ (3-i-1) + "机会");
                    sc.close();
                }
            }
        }
截屏2022-04-25 17.29.08.png
        String str1 = "Good Good Study,Day Day Up!";
        System.out.println(str1.indexOf('d')); // 查找第一个'd'所在的位置,-1代表失败
        int index = str1.indexOf('d',2); // 从第二个位置开始查询'd'
        System.out.println(index);
        System.out.println(str1.indexOf("Day")); // 16

        List list=new ArrayList();
        boolean run = true;
        int subIndex = 0;
        while (run) {
            if (str1.indexOf("Day",subIndex) == -1) {
                run = false;
            }else {
                subIndex = str1.indexOf("Day",subIndex);
                System.out.println(subIndex);
                subIndex += 3;
                list.add(subIndex);

            }
        }
        System.out.println(list);

String类中子字符串的获取

截屏2022-04-25 17.35.32.png
        String test = "hellow world";
        String test2 =  test.substring(3,5);
        System.out.println(test2); // lo

        String test3 = test.substring(3);
        System.out.println(test3); // low world

正则表达式

截屏2022-04-25 17.48.36.png
截屏2022-04-25 22.42.05.png
截屏2022-04-25 22.43.50.png
判断银行卡密码规则
        // 1.定义描述规则的正则表达式字符串
        String reg = "^[0-9]{6}$";
        // 2.提示用户从键盘输入指定的内容并使用变量记录
        System.out.println("请输入您的银行卡密码:");
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        // 3.判断用户输入的字符串内容是否满足指定的规则并打印
        if (str.matches(reg)) {
            System.out.println("银行卡密码的格式正确");
        }else {
            System.out.println("格式不正确");
        }

QQ号码的规则

        String reg1 = "^[1-9]\\d{4,14}";
        System.out.println("请输入您的QQ号码:");
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        // 3.判断用户输入的字符串内容是否满足指定的规则并打印
        if (str.matches(reg1)) {
            System.out.println("QQ号码的格式正确");
        }else {
            System.out.println("格式不正确");
        }

手机号码的规则

        String reg1 = "^1[34578]\\d{9}";
        System.out.println("请输入您的手机号码:");
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        // 3.判断用户输入的字符串内容是否满足指定的规则并打印
        if (str.matches(reg1)) {
            System.out.println("手机号码的格式正确");
        }else {
            System.out.println("格式不正确");
        }

身份证号码规则

        String reg1 = "(\\d{6})(\\d{4})(\\d{2})(\\d{2})(\\d{3})([0-9|X])";
        System.out.println("请输入您的身份证号码:");
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        // 3.判断用户输入的字符串内容是否满足指定的规则并打印
        if (str.matches(reg1)) {
            System.out.println("身份证号码的格式正确");
        }else {
            System.out.println("格式不正确");
        }
截屏2022-04-25 23.33.59.png
        String str1 = "1001,zhangfei,30";
        String[] sArr = str1.split(",");
        for (int i = 0; i < sArr.length; i++) {
            System.out.println(sArr[i]);
        }

        String str2 = "abcdefgaaff";
        str2 = str2.replace("a","h");
        System.out.println(str2); // hbcdefghhff

        String str6 = "123abc456def789ghi";
        // 将第一个数字字符串替换为#
        String  str7 = str6.replaceFirst("\\d{1}","#");
        System.out.println(str7);
        // 将所有字母字符串替换为"$$$"
        String str8 = str7.replaceAll("[a-z]{1}","A");
        System.out.println(str8);

相关文章

网友评论

      本文标题:Java - 核心类库上(任务二.String类的概述和使用)

      本文链接:https://www.haomeiwen.com/subject/qejtyrtx.html