美文网首页
Java基础系列24-常用api之String类

Java基础系列24-常用api之String类

作者: 只是甲 | 来源:发表于2021-08-24 14:35 被阅读0次

    一.String类概述

    String类概述:
    通过JDK提供的API,查看String类的说明

    1. "abc"是String类的一个实例,或者成为String类的一个对象
    2. 字符串字面值"abc"也可以看成是一个字符串对象
    3. 字符串是常量,一旦被赋值,就不能被改变
    4. 字符串本质是一个字符数组

    String类的构造方法:

    1. String(String original):把字符串数据封装成字符串对象
    2. String(char[] value):把字符数组的数据封装成字符串对象
    3. String(char[] value, int index, int count):把字符数组的一部分数据封装成字符串对象

    String类 api文档:


    image.png

    二.String类案例

    2.1 String类4种常用构造方法

    String的构造方法:
      方式1. String(String original):把字符串数据封装成字符串对象
      方式2. String(char[] value):把字符数组的数据封装成字符串对象
      方式3. String(char[] value, int index, int count):把字符数组的一部分数据封装成字符串对象
      方式4. String():最常用的 API中表示(Java程序中所有字符串字面值 如“abc”都作为此类的实例实现)

    public String toString():返回此对象本身(它已经是一个字符串!)。

    代码:

    package Java_study;
    
    /**
     * 
     * @author  只是甲
     * @date    2021-06-30
     * @remark  String类4种常用构造方法
     *
     */
    public class string1 {
        public static void main(String[] args) {
            //方式1. String(String original):把字符串数据封装成字符串对象
            String s1 = new String("hello1");
            /*如果打印的不是 包名+类名+@+地址 则表示String类重写了toString方法*/
            System.out.println(s1);//hello1
            System.out.println("------");
            
            //方式2. String(char[] value):把字符数组的数据封装成字符串对象
            char[] value2 = {'h','e','l','l','o','2'};
            String s2 = new String(value2);
            System.out.println(s2);//hello2
            System.out.println("------");
            
             //方式3. String(char[] value, int index, int count):把字符数组的一部分数据封装成字符串对象
            char[] value3 = {'h','e','l','l','o','3','3','3'};
            String s3 = new String(value3, 0, value3.length - 2);
            System.out.println(s3);//hello3
            System.out.println("------");
            
            //方式4. String():最常用的
            String s4 = "hello4";
            System.out.println(s4);
            System.out.println("------");
        }
    
    }
    

    测试记录:

    hello1
    ------
    hello2
    ------
    hello3
    ------
    hello4
    ------
    

    2.2 String类创建对象两种方式

    String类创建对象的特点:
      A:通过构造方法创建对象
      B:通过直接赋值的方式创建对象

    这两种方式的创建是有区别的:
      1.通过构造方法创建的字符串对象是在堆内存。
      2.通过直接赋值的方式创建的字符串对象是在方法区的常量池。

    内存图:

    image.png

    代码:

    package Java_study;
    
    /**
     * 
     * @author  只是甲
     * @date    2021-06-30
     * @remark  String创建对象的两种方式
     *
     */
    public class string2 {
        public static void main(String[] args) {
            String s1 = new String("hello");
            String s2 = new String("hello");
            
            String s3 = "hello";
            String s4 = "hello";
            
            System.out.println(s1 == s2);//false
            System.out.println(s1 == s3);//false
            System.out.println(s3 == s4);//true
        }
    
    }
    

    测试记录

    false
    false
    true
    

    2.3 String类练习之模拟用户登录

    需求:
      模拟登录,给三次机会,并提示还有几次

    分析:
      A:定义两个字符串对象,用于存储已经存在的用户名和密码
      B:键盘录入用户名和密码
      C:拿键盘录入的用户名和密码去跟已经存在的用户名和密码进行比较
        如果内容相同,就提示登录成功
        如果内容不同,就提示登录失败,并提示还有几次机会
        public boolean equals(Object anObject):比较字符串的内容,严格区分大小写(用户名和密码)
        public boolean equalsIgnoreCase(String anotherString):比较字符串的内容,不考虑大小写(验证码)


    image.png

    代码:

    package Java_study;
    
    import java.util.Scanner;
    
    /**
     * 
     * @author  只是甲
     * @date    2021-06-30
     * @remark  String类练习之模拟用户登录
     *
     */
    public class string3 {
        public static void main(String[] args) {
            //定义两个字符串对象,用于存储已经存在的用户名和密码
            String username = "admin";
            String password = "admin";
            
            //循环次数
            int count = 0;
            //键盘录入的用户名
            String scName;
            //键盘录入的密码
            String scPassword;
            //创建键盘录入对象
            Scanner sc = new Scanner(System.in);
            
            //模拟登陆,给三次机会
            while (count < 3) {
                System.out.println("请输入用户名:");
                scName = sc.nextLine();
                System.out.println("请输入密码");
                scPassword = sc.nextLine();
                
                //事件A: 用户名相等
                boolean a = scName.equals(username);
                //事件B:密码相等
                boolean b = scPassword.equals(password);
                //事件C: 错误次数小于3
                boolean c = count < 2;
                if (a && b) {
                    System.out.println("登陆成功");
                    break;
                    //用户名或密码任意一个不低,且登录次数小于3,提示次数,并重新输入
                } else if (c) {
                    System.out.println("登陆失败,你还有" + (2 - count) + "次机会");
                    //用户名或密码任意一个不对,且登录次数大于3,锁定账号,并跳出循环
                } else {
                    System.out.println("你的账号被锁定,请与管理员联系");
                    break;
                }
                
                //每次循环次数加1
                count++;
                 
            }
        }
    
    }
    
    

    测试记录:

    请输入用户名:
    admin
    请输入密码
    abc
    登陆失败,你还有2次机会
    请输入用户名:
    
    请输入密码
    
    登陆失败,你还有1次机会
    请输入用户名:
    admin
    请输入密码
    admin
    登陆成功
    
    

    2.4 String类遍历字符串

    需求:
      遍历字符串(获取字符串中的每一个字符)

    public char charAt(int index):
      返回指定索引处的值

    public int length():
      返回字符串中的字符个数,字符串的长度

    image.png
    image.png

    代码:

    package Java_study;
    
    /**
     * 
     * @author  只是甲
     * @date    2021-06-30
     * @remark  INDEX_STATISTICS
     */
    public class string4 {
        public static void main(String[] args) {
            //要遍历字符串,你首先得有一个字符串
            String s = "abcde";
            
            //思考:如何获取字符串中的每一个字符
            //假如让我们来提供方法,我们应该提供一个根据索引返回指定位置的字符的方法
            //返回值:char
            //形式参数:int index
            //public char charAt(int index):返回指定索引处的值
            //原始做法
            System.out.println(s.charAt(0));
            System.out.println(s.charAt(1));
            System.out.println(s.charAt(2));
            System.out.println(s.charAt(3));
            System.out.println(s.charAt(4));
            System.out.println("----------");
            
            //用for循环改进
            for (int i = 0; i < s.length(); i++) {
                System.out.println(s.charAt(i));
            }
            System.out.println("----------");
            
            
    
            
        }
    
    }
    

    测试记录:

    a
    b
    c
    d
    e
    ----------
    a
    b
    c
    d
    e
    ----------
    

    2.5 String类字符串拼接

    需求:
    把数组中的数据按照指定个格式拼接成一个字符串

    举例:int[] arr = {1,2,3};
    输出结果:[1, 2, 3]

    分析:
    A:定义一个int类型的数组
    B:写方法实现把数组中的元素按照指定的格式拼接成一个字符串
    C:调用方法
    D:输出结果

    代码:

    package Java_study;
    
    /**
     * 
     * @author  只是甲
     * @date    2021-06-30
     * @remark  String类字符串拼接
     *
     */
    public class string5 {
        public static void main(String[] args) {
            //定义一个int类型的数组
            int[] arr = {1,2,3};
            
            String result = arrayToString(arr);
            
            System.out.print(result);
        }
        
        public static String arrayToString(int[] arr) {
            String s = "[";
            for (int i = 0; i < arr.length; i++) {
                s += arr[i];
                //如果不是最后一个元素,则再拼个逗号 ,
                if (i != arr.length - 1) {
                    s += ",";
                    //如果是最后一个元素,则再拼个右括号 ]
                } else {
                    s += "]";
                }
            }
            return s;
        }
    
    }
    

    测试记录:

    [1,2,3]
    

    2.6 String类字符串反转

    需求:
    字符串反转

    举例:键盘录入”abc”
    输出结果:”cba”

    分析:
     A:键盘录入字符串数据
     B:写方法实现字符串数据的反转
      把字符串倒着遍历,在把每一个得到的字符拼接成一个字符串
     C:调用方法
     D:输出结果

    代码:

    package Java_study;
    import java.util.Scanner;
    
    /**
     * 
     * @author  只是甲
     * @date    2021-06-30
     * @remark  String类字符串反转
     *
     */
    public class string6 {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入一个字符串:");
            String s = sc.nextLine();
            //写方法实现字符串数据的翻转
            
            //调用方法
            String result = reverse(s);
            
            //输出结果
            System.out.println(result);
        }
        
        public static String reverse(String source) {
            String result = "";
            //反向for循环
            for (int i = source.length() - 1; i >= 0; i--) {
                result += source.charAt(i);
            }
            return result;
        }
    
    }
    

    测试记录:

    请输入一个字符串:
    adefesefaae
    eaafesefeda!QAZxsw2
    
    

    参考:

    1. https://blog.csdn.net/qq_43529621/article/details/115379095

    相关文章

      网友评论

          本文标题:Java基础系列24-常用api之String类

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