美文网首页
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