1.13 String 和StringBuilder

    技术2025-03-15  35

    1.13 String 和StringBuilder

    1 String

    1.1字符串的比较【理解】

    1.1.1==号的作用

    比较基本数据类型:比较的是具体的值 比较引用数据类型:比较的是对象地址值

    1.1.2equals方法的作用

    方法介绍:

    public boolean equls(String s) 比较两个字符串内容是否相同、区分大小写

    示例:

    /* equals方法介绍 比较两个字符串内容是否相同、区分大小写 */ public class StringDemo01 { public static void main(String[] args) { // 构造方法得到对象 char[] chs = {'a', 'b', 'z'}; String s1 = new String(chs); String s2 = new String(chs); // 直接赋值的方式 String s3 = "abz"; String s4 = "abz"; // 比较字符串地址是否相同 System.out.println(s1 == s2); // false System.out.println(s1 == s3); // false System.out.println(s3 == s4); // true // 比较字符串内容是否相同 System.out.println(s1.equals(s2)); // true System.out.println(s1.equals(s3)); // true System.out.println(s3.equals(s4)); // true } }

    1.2用户登录案例【应用】

    1.2.1案例需求

    已知用户名和密码,请用程序实现模拟用户登录。总共给三次机会,登录之后,给出相应的提示

    package demo07.demo01; import java.util.Scanner; /* #### 1.2.1案例需求 已知用户名和密码,请用程序实现模拟用户登录。 总共给三次机会,登录之后,给出相应的提示 */ public class StringTest01 { public static void main(String[] args) { String name = "joker"; String code = "abc123"; Scanner sc = new Scanner(System.in); for (int i = 0; i < 3; i++) { System.out.println("请输入用户名"); String username = sc.nextLine(); System.out.println("请输入密码"); String password = sc.nextLine(); System.out.println("--------------"); if (name.equals(username) && code.equals(password)) { System.out.println("登陆成功!!!" + username + " 欢迎你。"); break; } else { if (2 - i == 0) { System.out.println("您的账户已经被锁定,请联系管理员。"); } else { System.out.println("对不起,用户名或密码不正确。请重新输入。机会:" + (2-i)); } } } } }

    1.3遍历字符串案例【应用】

    1.3.1案例需求

    键盘录入一个字符串,使用程序实现在控制台遍历该字符串

    package demo07.demo01; import java.util.Scanner; /* #### 1.3.1案例需求 键盘录入一个字符串,使用程序实现在控制台遍历该字符串 */ public class StringTest02 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入字符串!"); String str = sc.nextLine(); fun(str); } // 定义遍历方法。 public static void fun(String str) { for (int i = 0; i < str.length(); i++) { char ch= str.charAt(i); System.out.print(ch + " "); } } }

    1.4统计字符次数案例【应用】

    1.4.1案例需求

    键盘录入一个字符串,统计该字符串中大写字母字符,小写字母字符,数字字符出现的次数(不考虑其他 字符)

    package demo07.demo01; import java.util.Scanner; /* 1.4统计字符次数案例【应用】 1.4.1案例需求 键盘录入一个字符串,统计该字符串中大写字母字符,小写字母字符, 数字字符出现的次数(不考虑其他字符) */ public class StringTest03 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入字符串。"); String str = sc.nextLine(); fun(str); } // 定义方法 public static void fun(String str) { int a = 0; int b = 0; int c = 0; int d = 0; for (int i = 0; i < str.length(); i++) { char ch = str.charAt(i); if (ch >= 'A' && 'Z' >= ch) { a++; } else if (ch >= 'a' && 'z' >= ch) { b++; } else if (ch >= '0' && '9' >= ch) { c++; } else { d++; } } System.out.println("大写:" + a); System.out.println("小写:" + b); System.out.println("数字:" + c); System.out.println("其他:" + d); } }

    1.5字符串拼接案例【应用】

    1.5.1案例需求

    定义一个方法,把 int 数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法, 并在控制台输出结果。例如,数组为 int[] arr = {1,2,3}; ,执行方法后的输出结果为:[1, 2, 3]

    /* ### 1.5字符串拼接案例【应用】 #### 1.5.1案例需求 定义一个方法,把 int 数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法, 并在控制台输出结果。例如,数组为 int[] arr = {1,2,3}; 执行方法后的输出结果为:[1, 2, 3] */ public class StringTest04 { public static void main(String[] args) { int[] arr = {1, 2, 3}; String str = fun(arr); System.out.println(str); } private static String fun(int[] arr) { String str = "["; for (int i = 0; i < arr.length; i++) { if (i == arr.length-1) { str+=(arr[i] + "]"); } else { str+=(arr[i] + ", "); } } return str; } }

    1.6字符串反转案例【应用】

    1.6.1案例需求

    定义一个方法,实现字符串反转。键盘录入一个字符串,调用该方法后,在控制台输出结果 例如,键盘录入 abc,输出结果 cba

    import java.util.Scanner; /* ### 1.6字符串反转案例【应用】 #### 1.6.1案例需求 定义一个方法,实现字符串反转。键盘录入一个字符串,调用该方法后,在控制台输出结果 例如,键盘录入 abc,输出结果 cba */ public class StringTest05 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入字符串"); String str1 = sc.nextLine(); String str = fun(str1); System.out.println(str); } private static String fun(String str1) { String str = ""; for (int i = str1.length() - 1; i >= 0; i--) { str+=str1.charAt(i); } return str; } }

    1.7 帮助文档查看String常用方法【记忆】

    方法名说明public boolean equals(Object anObject)比较字符串的内容,严格区分大小写(用户名和密码)public char charAt(int index)返回指定索引处的 char 值public int length()返回此字符串的长度

    2 StringBuilder类

    2.1StringBuilder类概述【理解】

    StringBuilder 是一个可变的字符串类,我们可以把它看成是一个容器,这里的可变指的是 StringBuilder 对象中的内容是可变的

    2.2StringBuilder类和String类的区别【理解】

    String类:内容是不可变的 StringBuilder类:内容是可变的

    2.3StringBuilder类的构造方法【记忆】

    常用构造方法

    方法名说明public StringBuilder()创建一个空白可变字符串对象,不含有任何内容public StringBuilder(String str)str) 根据字符串的内容,来创建可变字符串对象

    示例:

    package demo07.demo01; public class StringTest06 { public static void main(String[] args) { // public StringBuilder() :创建一个空白可变的字符串对象,不含有任何内容。 StringBuilder sb = new StringBuilder(); System.out.println(sb); System.out.println(sb.length()); System.out.println("-----------"); // public StringBuilder(String str) :根据字符串的内容,来创建可变字符串对象 StringBuilder sb2 = new StringBuilder("hello"); System.out.println(sb2); System.out.println(sb2.length()); } }

    2.4StringBuilder类添加和反转方法【记忆】

    添加和反转方法

    方法名说明public StringBuiilder append(任意类型)添加数据,并且返回对象本身public StringBuilder reverse()返回相反的字符序列

    方法名说明

    package demo07.demo01; public class StringTest07 { public static void main(String[] args) { // 创建对象 StringBuilder sb = new StringBuilder(); // public StringBuilder append(任意类型):添加数据,并返回对象本身 StringBuilder sb2 = sb.append("hello"); System.out.println(sb); System.out.println(sb2); System.out.println(sb == sb2); // true // 链式编程 sb.append("hello").append("world").append("java").append(100); System.out.println(sb); // public StringBuilder reverse() :返回相反的字符序列 sb.reverse(); System.out.println(sb); } }

    2.5 StringBuilder和String相互转换【应用】

    StringBuilder转换为String

    ​ public String toString() :通过toString()就可以实现把 StringBuilder 转换为 String

    String转换为StringBuilder

    ​ public StringBuilder(String s) :通过构造方法就可以实现把 String 转换为 StringBuilder

    示例代码
    package demo07.demo01; public class StringTest08 { public static void main(String[] args) { // StringBuilder 转换为 String StringBuilder sb = new StringBuilder(); sb.append("hello"); // 使用 public String toString() : // 过toString方法就可以实现StringBuilder转换为String String s = sb.toString(); System.out.println(s); // String 转换为 StringBuilder String s1 = "world"; // public StringBuilder(String sb) : // 通过构造方法就可以实现把String 转换为 StringBuilder StringBuilder sb2 = new StringBuilder(s1); System.out.println(sb2); } }

    2.6字符串拼接升级版案例【应用】

    2.6.1案例需求

    定义一个方法,把 int 数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法, 并在控制台输出结果。例如,数组为int[] arr = {1,2,3}; ,执行方法后的输出结果为:[1, 2, 3]

    代码实现:

    package demo07.demo01; /* 2.6字符串拼接升级版案例【应用】 #### 2.6.1案例需求 定义一个方法,把 int 数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法, 并在控制台输出结果。例如,数组为int[] arr = {1,2,3}; 执行方法后的输出结果为:[1, 2, 3] */ public class StringTest09 { public static void main(String[] args) { int[] arr = {1, 2, 3}; String s = fun(arr); System.out.println(s); } private static String fun(int[] arr) { StringBuilder sb = new StringBuilder(); sb.append("["); for (int i = 0; i < arr.length; i++) { if (i == (arr.length-1)){ sb.append(arr[i] + "]"); } else { sb.append(arr[i] + ", "); } } String s = sb.toString(); return s; } }

    2.7字符串反转升级版案例【应用】

    2.7.1案例需求

    定义一个方法,实现字符串反转。键盘录入一个字符串,调用该方法后,在控制台输出结果 例如,键盘录入abc,输出结果 cba

    package demo07.demo01; import java.util.Scanner; /* 2.7字符串反转升级版案例【应用】 2.7.1案例需求 定义一个方法,实现字符串反转。键盘录入一个字符串,调用该方法后,在控制台输出结果 例如,键盘录入abc,输出结果 cba */ public class StringTest10 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入字符串:"); String s = sc.nextLine(); s = fun(s); System.out.println(s); } private static String fun(String s) { StringBuilder sb = new StringBuilder(s); sb.reverse(); String s1 = sb.toString(); return s1; } }

    2.8帮助文档查看StringBuilder常用方法【记忆】

    方法名说明public StringBuilder(任意类型)添加数据,并返回对象本身public StringBuilder()返回相反的字符序列public int length()返回长度,实际存储值public Stirng toString()通过toString()就可以实现把StringBuilder转换为String

    扩展题:

    题目1:

    ​ 请定义一个方法用于判断一个字符串是否是对称的字符串,并在主方法中测试方法。例如:“abcba”、"上海自来水来自海上"均为对称字符串。

    package demo07.demo01; import java.util.Scanner; /* ### 题目1: 请定义一个方法用于判断一个字符串是否是对称的字符串,并在主方法中测试方法。 例如:"abcba"、"上海自来水来自海上"均为对称字符串。 */ public class StringTest11 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入字符串"); String s = sc.nextLine(); fun(s); } private static void fun(String s) { StringBuilder sb = new StringBuilder(s); StringBuilder rs = sb.reverse(); if (s.equals(rs)){ System.out.println("对称。"); } else { System.out.println("不对称。"); } } }
    Processed: 0.013, SQL: 9