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

x33g5p2x  于2021-12-18 转载在 其他  
字(5.4k)|赞(0)|评价(0)|浏览(457)

一.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文档:

二.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():返回此对象本身(它已经是一个字符串!)。

代码:

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

测试记录:

  1. hello1
  2. ------
  3. hello2
  4. ------
  5. hello3
  6. ------
  7. hello4
  8. ------

2.2 String类创建对象两种方式

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

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

内存图:

代码:

  1. package Java_study;
  2. /**
  3. *
  4. * @author 只是甲
  5. * @date 2021-06-30
  6. * @remark String创建对象的两种方式
  7. *
  8. */
  9. public class string2 {
  10. public static void main(String[] args) {
  11. String s1 = new String("hello");
  12. String s2 = new String("hello");
  13. String s3 = "hello";
  14. String s4 = "hello";
  15. System.out.println(s1 == s2);//false
  16. System.out.println(s1 == s3);//false
  17. System.out.println(s3 == s4);//true
  18. }
  19. }

测试记录

  1. false
  2. false
  3. true

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

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

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

代码:

  1. package Java_study;
  2. import java.util.Scanner;
  3. /**
  4. *
  5. * @author 只是甲
  6. * @date 2021-06-30
  7. * @remark String类练习之模拟用户登录
  8. *
  9. */
  10. public class string3 {
  11. public static void main(String[] args) {
  12. //定义两个字符串对象,用于存储已经存在的用户名和密码
  13. String username = "admin";
  14. String password = "admin";
  15. //循环次数
  16. int count = 0;
  17. //键盘录入的用户名
  18. String scName;
  19. //键盘录入的密码
  20. String scPassword;
  21. //创建键盘录入对象
  22. Scanner sc = new Scanner(System.in);
  23. //模拟登陆,给三次机会
  24. while (count < 3) {
  25. System.out.println("请输入用户名:");
  26. scName = sc.nextLine();
  27. System.out.println("请输入密码");
  28. scPassword = sc.nextLine();
  29. //事件A: 用户名相等
  30. boolean a = scName.equals(username);
  31. //事件B:密码相等
  32. boolean b = scPassword.equals(password);
  33. //事件C: 错误次数小于3
  34. boolean c = count < 2;
  35. if (a && b) {
  36. System.out.println("登陆成功");
  37. break;
  38. //用户名或密码任意一个不低,且登录次数小于3,提示次数,并重新输入
  39. } else if (c) {
  40. System.out.println("登陆失败,你还有" + (2 - count) + "次机会");
  41. //用户名或密码任意一个不对,且登录次数大于3,锁定账号,并跳出循环
  42. } else {
  43. System.out.println("你的账号被锁定,请与管理员联系");
  44. break;
  45. }
  46. //每次循环次数加1
  47. count++;
  48. }
  49. }
  50. }

测试记录:

  1. 请输入用户名:
  2. admin
  3. 请输入密码
  4. abc
  5. 登陆失败,你还有2次机会
  6. 请输入用户名:
  7. 请输入密码
  8. 登陆失败,你还有1次机会
  9. 请输入用户名:
  10. admin
  11. 请输入密码
  12. admin
  13. 登陆成功

2.4 String类遍历字符串

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

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

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

代码:

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

测试记录:

  1. a
  2. b
  3. c
  4. d
  5. e
  6. ----------
  7. a
  8. b
  9. c
  10. d
  11. e
  12. ----------

2.5 String类字符串拼接

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

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

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

代码:

  1. package Java_study;
  2. /**
  3. *
  4. * @author 只是甲
  5. * @date 2021-06-30
  6. * @remark String类字符串拼接
  7. *
  8. */
  9. public class string5 {
  10. public static void main(String[] args) {
  11. //定义一个int类型的数组
  12. int[] arr = {1,2,3};
  13. String result = arrayToString(arr);
  14. System.out.print(result);
  15. }
  16. public static String arrayToString(int[] arr) {
  17. String s = "[";
  18. for (int i = 0; i < arr.length; i++) {
  19. s += arr[i];
  20. //如果不是最后一个元素,则再拼个逗号 ,
  21. if (i != arr.length - 1) {
  22. s += ",";
  23. //如果是最后一个元素,则再拼个右括号 ]
  24. } else {
  25. s += "]";
  26. }
  27. }
  28. return s;
  29. }
  30. }

测试记录:

  1. [1,2,3]

2.6 String类字符串反转

需求:
字符串反转

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

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

代码:

  1. package Java_study;
  2. import java.util.Scanner;
  3. /**
  4. *
  5. * @author 只是甲
  6. * @date 2021-06-30
  7. * @remark String类字符串反转
  8. *
  9. */
  10. public class string6 {
  11. public static void main(String[] args) {
  12. Scanner sc = new Scanner(System.in);
  13. System.out.println("请输入一个字符串:");
  14. String s = sc.nextLine();
  15. //写方法实现字符串数据的翻转
  16. //调用方法
  17. String result = reverse(s);
  18. //输出结果
  19. System.out.println(result);
  20. }
  21. public static String reverse(String source) {
  22. String result = "";
  23. //反向for循环
  24. for (int i = source.length() - 1; i >= 0; i--) {
  25. result += source.charAt(i);
  26. }
  27. return result;
  28. }
  29. }

测试记录:

  1. 请输入一个字符串:
  2. adefesefaae
  3. eaafesefeda!QAZxsw2

参考:

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

相关文章